python爬虫实战:POST提交登录知乎

Python kingmo888 9038℃ 0评论

通过前几篇文章的学习,已经对爬虫有了初步的了解,接下来就要解决需要登录的内容了。这里用到的内容比如python爬虫学习计划中讲到的cookieslib、urllib2的build_opener等模块。
那么开始下一步模拟登录吧。这次我们选择知乎作为实战对象,

 


其实也实验了人人网的模拟登录,在分析post路径时老是找不对,只能找网上的其他朋友提供的url才能正确登录,都是泪。这里就不多说了。


cookies就是服务器的授权,登录后浏览网页,其主要是客户机发送请求到服务器后,服务器返回给客户机并被客户机记录到本地的东西……
那么,我们用python模拟访问时,就需要记录这个cookies,否则登陆后再访问还是未登录状态。在这里保存cookies用的是cookielib模块。
分析登录地址(具体可参见以前文章)

以电话号码为登录ID的登录地址

 

提交的data元素
很明显,提交时传递的是明文 – -!
_xsrf这里不知道是什么作用,不用管他,直接带上好了。

# encoding:utf-8
import urllib, urllib2, cookielib, time

# post提交地址,用chrome浏览器的开发者工具监控得到
loginurl = 'http://www.zhihu.com/login/phone_num'
mysite = 'https://www.zhihu.com/inbox'
formdata = '''xsrf:83800e8b9d801e5b770e5ad3b528ef8e
password:YourPassword
phone_num:YourTel'''
data = dict([x.split(':') for x in formdata.split('\n')])
data = urllib.urlencode(data)
# 实例化一个cookies保存器
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# 添加网页头将爬虫伪装成浏览器,以防止网站防采集。
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.10551.6 Safari/537.36')]
# 打开登录页登录
opener.open(loginurl, data)
# 如果登录成功,就可以看到cookies了
print cj
# 登陆后可以直接打开需要登录才能访问的网页
op = opener.open(mysite)
result = op.read()

print result


# 把访问内容保存到本地网页中查看是否成功登录。
f = open('zhihu.html','w')
f.writelines(result)
f.close()

下节预告:

模拟登录需要输入验证码的网站(手工识别验证码)

模拟登录需要输入验证码的网站(自动识别验证码)

转载请注明:Python量化投资 » python爬虫实战:POST提交登录知乎

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 高大上
    大肥2016-04-28 20:01 回复