본문 바로가기
IT/[파이썬]

크롤링 안되는 사이트 or 거부당할 때

by Coffee With Me 2020. 4. 5.

크롤링 할 때 다른 주소는 requests.get(url) 을 받으면 페이지 소스를 잘 받아오는데,

아무 반응이 없거나 위에 그림 처럼 오류가 발생하는 페이지가 있다.

 

이 때, requests.get(url).text 를 이용해서 내용을 확인해 볼 수 있다.


improt requests

url = "크롤링할 사이트주소"

html = requests.get(url).text

html


사이트에서 거부당했음을 확인 할 수 있다. 서버에서 봇으로 인지하고 차단한 경우이다. 

 

불법적인 크롤링을 막기 위한 조치로 해당 사이트에서 크롤링 한 데이터를 상업적인 목적으로 활용할 생각이라면, 여기서 그만두는 것을 추천한다.

 

 

서버에서 봇인지 사람인지 사용자를 구분해주는 값을 담는 그릇이 있다.

headers 라는 그릇에 {'User-Agent' : '유저정보'}의 형태로 담겨있는데, 이 값을 사람인척 변경해주면 된다.

 

'유저정보' 에 들어가 값은 아래 사이트에 들어가서.

http://www.useragentstring.com/

 

UserAgentString.com - unknown version

 

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