天天看点

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

笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。

我的公众号为:livandata

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)

继续阅读