데이터 크롤링 : 웹사이트에서 자동으로 데이터를 수집하는 과정
crawling / scraping
- crawling : 여러 페이지를 자동으로 이동하면서 데이터를 수집
- scraping : 특정 페이지에서만 데이터를 수집
crawling에 사용하는 라이브러리
- request : http 요청을 보내기 위해 사용되는 라이브러리
- beautiful soup : html & xml 문서 분석 및 파싱 라이브러리
- selenium : 웹 브라우저를 자동으로 제어 (사용자의 클릭 위치 지정 가능)
scrapy : api 및 클래스를 이용한 크롤링 라이브러리
추출 : 텍스트만 가져옴 / 파싱 : HTML 문서를 구조화
#### 웹페이지 접근
###### 예시) 연금복권
import requests
url = requests.get('https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EC%97%B0%EA%B8%88%EB%B3%B5%EA%B6%8C')
###### print(url)의 결과가 <response 200>일 경우, 접근 성공
#### 데이터 구조화
from bs4 import BeautifulSoup
##### 보기 좋은 구조로
soup = BeautifulSoup(url.text[:500], 'html.parser')
pretty_html = soup.prettify()
pretty_html
#### find / find_all
html.find('a, attr = {'class' : 'text _select_trigger _text'})
#### .span('a')
html.find('a, attr = {'class' : 'text _select_trigger _text'}).span('a')
##### 추출한 데이터 중 <span> 태그를 단 모든 데이터를 추출
##### 뒤에 .text() 입력 시 텍스트만 추출 가능
#### 웹 테이블 추출
##### 예시) 네이버 코스피 데이터
import pandas as pd
url = requests.get(''https://finance.naver.com/sise/sise_market_sum.naver')
pd.read_html(url.text)
## 추가
### 웹페이지 접근 우회
dic = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_3_1)'}
url = requests.get('https://finance.naver.com/item/sise_day.naver?code=005930',
headers = dic)