2009-10-14 6 views
4

지금 당장 urllib2를 사용하여 일반 페이지를 크롤링 할 수 있습니다.Python을 사용하여 Facebook/Myspace에 로그인하고 콘텐츠를 크롤링하는 방법?

request = urllib2.Request('http://stackoverflow.com') 
request.add_header('User-Agent',random.choice(agents)) 
response = urllib2.urlopen(request) 
htmlSource = response.read() 
print htmlSource 

그러나 ... POST (또는 가짜 세션)를 시뮬레이트하고 싶습니다. 그래서 나는 페이스 북에 들어가서 크롤링 할 수 있습니다. 어떻게해야합니까?

답변

7

로그인 할 때 선택한 사이트에서 쿠키를 보내야합니다. 그것이 당신의 세션을 유지하는 것입니다. urllib2으로, 당신은 쿠키 처리를 지원하는 오프너 객체를 생성하여이 작업을 수행 : 당신이 요청을 할 수있는이 오프너로

import urllib2, cookielib 
jar = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

을 어느 GET 또는 POST :

content = opener.open(urllib2.Request(
    "http://social.netwo.rk/login", 
    "user=foo&pass=bar") 
).read() 

을에 두 번째 매개 변수 거기로 urllib2.Request, POST 요청이됩니다. None 인 경우 GET 요청이 끝납니다. .add_header과 함께 HTTP 헤더를 추가하거나 생성자에게 헤더의 사전 (또는 튜플 - 튜플)을 넘겨서 추가 할 수도 있습니다. 자세한 정보는 urllib2.Request의 매뉴얼을 읽으십시오.

시작해야합니다. 행운을 빕니다.

(PS : 당신이 쿠키에 대한 액세스를 읽을 필요가없는 경우, 당신은 자신을 항아리 쿠키를 만드는 생략 단지 수 있으며, HTTPCookieProcessor 당신을 위해 그것을 할 것입니다.)

1

urllib을 사용하여 데이터를 먼저 인코딩 한 다음 urllib2를 사용하여 요청을 보내면 POST 요청을 수행 할 수 있습니다.

이것은 this article에서 설명됩니다.

4

Mechanize 라이브러리로 쉬운 방법입니다 파이썬으로 브라우저를 에뮬레이션합니다.

1

또는 PyCurl을 선택 사항으로 사용할 수 있습니다 ...

관련 문제