[출처 : http://blog.jangc.net/485]


크롤링이 좋은 짓은 아니지만, 살다보면 필요한 때가 있다.

이런 작업은 주로 스크립트 언어로 수행이 되며, 나는 파이썬을 이용한다. 

파이썬으로 웹페이지를 다운 받는 코드는 다음과 같다.

import urllib
url = 'http://blog.jangc.net'
s = urllib.urlopen(url).read()
file('download.html', 'w').write(s)


그런데 이게 보면 어떤 페이지들은 브라우져로 접속할 때와 다른 페이지가 받아진다. 

이런 경우를 보면 대게 유저 에이전트를 채워주면 해결된다.


user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {}
headers = { 'User-Agent' : user_agent }

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
s = response.read()
file('download.html', 'w').write(s)


코드는 위와 같다. 

보면, user_agent라는 것에 모질라 어쩌구 MSIE 어쩌구 이런식으로 써있는데, 
브라우져들이 저 값을 보내준다. 그런데 첫번째 코드에선 그 값이 없기 때문에 
서버에서 로봇으로 판단해서 기능을 제한한 것이다.

그리고 추가로 values라고 된 부분에 넘겨줄 파라메터들을 설정할수도 있다. 

예를들면 
values = {'user_id':'jangc', 'password':'bimil'}
이렇게.



크롤링은 일반적으로 서버에 큰 부하를 주니, 꼭 필요한 경우에만 사용하는 하자.

끝.

+ Recent posts