파이썬을 통해 크롤링(Crawling)을 진행할 때, 코드 오류가 아닌데도 제대로 동작하지 않아 시간을 낭비하는 경우가 많습니다. 그럴 경우 체크해봐야 할 부분들에 대해서 공유해보도록 하겠습니다.
파이썬 크롤링 안될 때 체크리스트
1. 연결성(Connection) 체크
먼저, 크롤링하고자 하는 대상 URL 또는 IP에 대한 연결성을 다시 한번 체크해보시는 추천드립니다. 간혹, 코드에 이상이 없는데도 불구하고 Connection 오류로 인해 많은 시간을 낭비하는 경우가 있습니다. 대상에 대해 연결이 제대로 이루어지는지에 대한 확인은 반드시 필요합니다.
2. 응답 값 체크
연결이 제대로 이루어지고 있다면, 응답 값 (Response Data)를 직접 확인해야 합니다. 번거롭더라도 해당 값들을 print 함수를 통해 찍어보고, 예상한 응답 값인지를 체크할 필요성이 있습니다.
언제나 우리가 예상하는 응닶 값이 올 것이라고 예측하는 것은 굉장히 위험합니다.
3. Header의 User-Agent 값 체크
이 부분이 가장 많이 이슈가 되는 부분입니다. 대부분의 간단한 크롤링 코드에서는 Request 요청을 할 때, Header값을 명시적으로 추가하지 않는 경우가 많습니다.
하지만, 몇 몇 서버들은 특정 Header 값이 존재하지 않으면 제대로 된 응답 값을 주지 않는 경우도 있습니다. 특히나 User-Agent 값은 필수로 넣어서 요청하는 것이 크롤링 시, 오류를 줄이는 방법입니다.
위에서 파이썬 크롤링이 안될 때에 체크해 볼 수 있는 몇 가지 사항들에 대해서 알아 보았습니다. 아래에는 위 3번에서 언급한 Header 값을 추가하는 간단한 예제를 공유합니다. 참고하시기 바랍니다.
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"}
payload = {'param1': '1', 'param2': '2'}
r = requests.get("https://example.com, params=payload, headers=headers)
위와 같이 User-Agent 값을 추가하여 전송하거나, 추가로 Cookie 정보가 필요한 경우에도 위 코드를 참고하셔서 적절하게 추가하여 사용하시면 오류없는 크롤링을 진행할 수 있을거라 생각됩니다.