크롤링 할 때 다른 주소는 requests.get(url) 을 받으면 페이지 소스를 잘 받아오는데,
아무 반응이 없거나 위에 그림 처럼 오류가 발생하는 페이지가 있다.
이 때, requests.get(url).text 를 이용해서 내용을 확인해 볼 수 있다.
improt requests
url = "크롤링할 사이트주소"
html = requests.get(url).text
html
사이트에서 거부당했음을 확인 할 수 있다. 서버에서 봇으로 인지하고 차단한 경우이다.
불법적인 크롤링을 막기 위한 조치로 해당 사이트에서 크롤링 한 데이터를 상업적인 목적으로 활용할 생각이라면, 여기서 그만두는 것을 추천한다.
서버에서 봇인지 사람인지 사용자를 구분해주는 값을 담는 그릇이 있다.
headers 라는 그릇에 {'User-Agent' : '유저정보'}의 형태로 담겨있는데, 이 값을 사람인척 변경해주면 된다.
'유저정보' 에 들어가 값은 아래 사이트에 들어가서.
http://www.useragentstring.com/
네모 안에 값 전체를 복붙하면 된다.
import requests
url = "크롤링할 사이트"
header = {'User-gent' : '유저정보'}
requests.get(url, headers = header)
html = requests.get(url, headers = header).text
html
거부당할 때와는 다른 결과가 나온다면 성공!
이후 코딩에서 soup는 이렇게 가져오면 좋다.
import requests
from bs4 import BeautifulSoup as bs
import re
url = '크롤링 사이트'
header = {'User-Agent' : '유저정보'}
html = requests.get(url, headers = header)
soup = bs(html.content)
soup
'IT > [파이썬]' 카테고리의 다른 글
[파이썬] pickle 로 변수 저장하기 (0) | 2020.11.21 |
---|---|
[파이썬] 엑셀 파일 행, 열로 읽고 쓰기 (0) | 2020.09.16 |
jupyter notebook 주피터 IOPub data rate exceeded. 해결방법 (2) | 2020.06.12 |
Anaconda 비트 확인 방법 (0) | 2020.02.17 |