본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project

(48)
웹 크롤링 실습_6 - POST 웹 크롤링 방식 중 POST 방식으로 실습을 진행해보겠습니다. 예시 웹 사이트로 한국거래소 상장공시시스템에 접속해주세요. 그리고 [오늘의 공시 -> 전체 -> 더보기]를 선택하면 전체 공시내요을 확인할 수 있습니다. (링크) 여기서 다른 날짜를 검색해도 페이지는 바뀌지만 URL은 바뀌지 않는 것을 확인할 수 있습니다. POST방식인 것을 확인할 수 있습니다. 개발자도구 화면을 열고 [Network] 클릭 후, 오늘의 공시에 날짜를 클릭하면 todaydisclosure.do 를 확인할 수 있습니다. todaydisclosure.do를 통해 데이터를 요청하는 것입니다. 그것을 클릭하여 [Headers]를 보시면 Request URL이 우리가 요청하는 주소이고, Request method가 POST방식임을 확..
웹 크롤링 실습_5 - 테이블 데이터 크롤링 하기(pandas) 웹 페이지에서 테이블 데이터를 크롤링 하는 방법을 알아보겠습니다. 먼저 예시 웹 사이트로 위키피디아에 [List of countries by stock market capitalization]을 검색해줍니다. (링크) 이 웹사이트에 있는 테이블 데이터를 크롤링 해보겠습니다. #테이블 데이터를 다룰 때는 pandas를 사용해준다. import pandas as pd url = 'https://en.wikipedia.org/wiki/List_of_countries_by_stock_market_capitalization' tbl = pd.read_html(url) print(tbl) 이처럼 테이블 데이터는 기존의 크롤링 방식과 달리 매우 간단하게 pandas를 크롤링 할 수 있습니다.
웹 크롤링 실습_4 - 금융 속보 제목 추출하기 금융 속보 제목을 추출해보겠습니다. 네이버 증권 사이트 -> 뉴스 -> 실시간 속보로 가주세요. (링크) 해당 페이지에서 제목에 해당하는 부분을 알아내기 위해 개발자도구를 열어줍니다. 제목에 해당하는 부분에 우클릭 -> 검사 클릭 해줍니다. 여기서 제목 부분은 dl태그 -> dd 태그, class = articleSubject - > a 태그 -> title 속성의 속성값 import requests as rq from bs4 import BeautifulSoup url = 'https://finance.naver.com/news/news_list.naver?mode=LSS2D&section_id=101&section_id2=258' data = rq.get(url) html = BeautifulSoup..
웹 크롤링 실습_3 저번 포스트를 참조해주세요. 저번 시간에 이어 이번에는 명언을 말한 사람의 데이터를 크롤링 해보겠습니다. 명언을 말한 사람은 class가 qoute 인 div태그 -> span 태그-> small 태그 중 class 이름이 author인 부분입니다. quote_author = quote_html.select('div.quote > span > small.author') quote_author_list = [i.text for i in quote_author] print(quote_author_list) 이번에는 명언을 말한 사람에 대한 정보 링크들을 크롤링 해보겠습니다. span 태그 -> a 태그의 href 속성 -> 속성 값 링크에 해당하는 href 속성값에 접근하는 방법은 우선 select를 통해 ..
웹 크롤링 실습_2 - find_all(), select() 웹 크롤링을 처음 배우신 분들은 저번 포스트를 참조해주세요. 일반적인 크롤링 과정은 다음과 같습니다. 1. HTML 정보 받기 request 패키지의 get() 혹은 post() 함수를 이용해 데이터를 요청한 후 HTML정보를 가져옵니다. 2. 태그 및 속성 찾기 bs4 패키지의 함수들을 이용해 원하는 데이터를 찾습니다. 3. 클렌징 데이터 클렌징 #크롤링할 데이터의 태그 이제 크롤링 실습을 해보겠습니다. 웹 크롤링 연습으로 자주 사용되는 명언 인용 사이트를 이용하겠습니다. 먼저 크롤링을 하기 위해서는 우리가 가져오고 싶은 데이터가 어떤 태그에 위치하는지 알아야 합니다. 이를 위해 [F12] 키를 눌러 개발자도구 화면을 열고 [Elements]탭을 선택합니다. 그리고 마우스 우클릭 후 [검사]를 눌러보면..
UnicodeEncodeError: 'cp949' codec can't encode character 해결 이것은 cp949 codec이 문자를 encode를 못해서 발생하는 오류이다. 오류가 발생하는 파일에서 맨위에 다음과 같은 코드를 추가해주면 오류를 해결할 수 있다. # -*- encoding: utf-8 -*- import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') encoding 방식을 utf-8로 바꾸는 것이다.
웹 크롤링 실습_1 - GET, POST 크롤링 혹은 스크랩핑이란 웹 사이트에서 원하는 정보를 수집하는 기술을 뜻합니다. 크롤링을 할때의 주의사항이 있습니다. #주의사항 · 특정 웹사이트의 페이지를 쉬지 않고 크롤링 하는 행위를 무한 크롤링이라고 합니다. · 무한 크롤링은 해당 웹사이트의 자원을 독점하게 되어 타인의 사용을 막게 되며 웹사이트에 부하를 줍니다. · 일부 웹사이트에서는 동일한 ip로 쉬지 않고 크롤링을 할 경우 접속을 막아버리는 경우도 있습니다. · 따라서 하나의 페이지를 크롤링한 후 1~2초 가량 정지하고 다시 다음 페이지를 크롤링하는 것이 좋습니다. · 신문기사나 책, 논문, 사진 등 저작권이 있는 자료를 통해 부당이득을 얻는다는 등의 행위를 할 경우 법적 제재를 받을 수 있습니다. #GET 서버에 데이터를 요청하는 형태는 매..
Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_2 sql에서 upsert 사용방법 insert into @table (arg1, arg2, arg3) values (@arg1, @arg2, @arg3) on duplicate key update (key를 제외한 update할 칼럼) arg2 = @arg2, arg3 = @arg3 파이썬으로 upsert하는 방법을 보여주기 전에 MySQL에서 upsert를 먼저 보여드리겠습니다. 사용 예시를 보여주기 위해 exam db에 price테이블을 만든 후 데이터를 입력해보겠습니다. use exam; create table price_2( 날짜 varchar(10), 티커 varchar(6), 종가 int, 거래량 int, primary key(날짜, 티커) ); insert into price_2 (날짜, 티커..