如何使用Python登录Facebook/Myspace并抓取内容?

TIM*_*MEX 4 python authentication session post web-crawler

现在,我可以使用urllib2抓取常规页面.

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

但是......我想模拟POST(或假会话)?这样我就可以进入Facebook并爬行了.我怎么做?

AKX*_*AKX 7

当您登录时,您需要保留您选择的网站发送的cookie; 这就是保持会话的原因.使用urllib2,您可以通过创建支持cookie处理的Opener对象来完成此操作:

import urllib2, cookielib
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
Run Code Online (Sandbox Code Playgroud)

有了这个开场白,你可以做GET或POST请求:

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

由于urllib2.Request有第二个参数,它将是一个POST请求 - 如果是无,则最终得到一个GET请求.您还可以使用.add_header或通过将构造函数传递给标头的字典(或元组 - 元组)来添加HTTP标头.有关更多信息,请阅读urllib2.Request手册.

这应该让你开始!祝好运.

(ps:如果您不需要对cookie的读访问权限,您可以省略自己创建cookie jar; HTTPCookieProcessor将为您完成.)