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中:

web爬虫学习(三)——Cookies模拟登陆

确定要爬取的网页,在未登录的情况下微博会跳转到登录页面,即为下方的微博登录界面,确定登录的url:

web爬虫学习(三)——Cookies模拟登陆 

输入“用户名\密码”之后,页面会跳转到需要爬取的页面,使用“开发者工具”的network确定form data数据:

web爬虫学习(三)——Cookies模拟登陆

会发现password后面跟有“_2125”,搜索源代码可以发现“_2125”的值,由此可以明确,password_2125等字段在源代码中可以确认。

而action中的参数为下图中的rand:

 web爬虫学习(三)——Cookies模拟登陆

自此,可以确认相应的代码:

#!/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)