web爬虫学习(三)——Cookies模拟登陆
1、 用fiddler获取Cookies:
首先用自己的账号登录到网页版的手机微博上,
1) 获取登录数据包:
Cookie={“Cookie”:“XXXXXXXXX”}
Html = requests.get(url, cookies= cookie)
当用户输入用户名密码,并点击“保持登录”以后,这些数据会被发送给服务器,然后服务器验证数据,并成功登录。
需要提交的数据有哪些:
Data = {
‘Mobile’:(用户名),
Password:(密码),
‘Remember’:(是否保持登录),
‘backURL(登陆以后返回的地址),
backTitle’:(登录以后返回的标题),
‘tryCount’:(尝试次数),
‘vk’:(一个简单的验证码),
‘submit’:(登录),
‘action’:(URL参数)
}
主要是post方式提交(get方式提交时没有具体的data form,只需要用Cookies即可):
提交post数据时首先要建立一个data,然后将data放入到requests中:
确定要爬取的网页,在未登录的情况下微博会跳转到登录页面,即为下方的微博登录界面,确定登录的url:
输入“用户名\密码”之后,页面会跳转到需要爬取的页面,使用“开发者工具”的network确定form data数据:
会发现password后面跟有“_2125”,搜索源代码可以发现“_2125”的值,由此可以明确,password_2125等字段在源代码中可以确认。
而action中的参数为下图中的rand:
自此,可以确认相应的代码:
#!/usr/bin/env python
# _*_ UTF-8 _*_
import requests
from lxml import etree
from multiprocessing.dummy import Pool
url = 'http://weibo.cn/u/1890493665'
url_login = 'https://.weibo.cn/login/'
html = requests.get(url, cookies =cook).content.decode('gbk')
selector = etree.HTML(html)
print(html)
从源码中确认出password的关键字怎么用:
password = selector.xpath()[]
vk = selector.xpath()[]
action = selector.xpath()[]
print(action)
print(password)
print(vk)
new_url = url_login + action
data = {
'mobile':'[email protected]',
password:'xujingboyy123',
'remember':'on',
'backURL':'http://weibo.cn/u/1890493665',
'backTitle':u'微博',
'tryCount':'',
'vk':vk,
'submit':u'登录'
}
new_html = requests.post(new_url, data=data).content
new_selector = etree.HTML(new_html)
content = new_selector.xpath()
for each in content:
text = each.xpath('string(.)')
b=1
print(text)