当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。

模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容。

实现微博登录的方法有很多,一般我们在模拟登录时首选WAP版。

因为PC版网页源码中包括很多的js代码,提交的内容也更多,不适合机器模拟登录。

我们实现微博登录的大体思路是这样的:

用抓包工具把正常登录时要提交的字段都记录下来;

模拟提交这些字段;

判断是否登录成功;

原理很简单,让我们一步一步来实现吧。

一.抓包利器Fiddler

在电脑和互联网之间的通信是通过不同的数据包收发来实现的。

Fiddler可以从中间对数据进行拦截,拷贝一份数据以后再将数据发送给目的端。(这也是为什么说咖啡馆的公共WIFI不安全的原因)

同类的还有WireShark。为何这儿不用WireShark呢?

Wireshark太过于专业了,它可以实现抓取各种包,抓下来的包也很乱,针对性没Fiddler那么强。

下载安装

2.安装方法:fiddler依赖.Net环境,如果已经有则无需配置,直接点击下一步就行。

使用方法

1.启动Fiddler

2.配置Fiddler

点击左上角的“ WinConfig”,找到你使用的浏览器并勾选,点击“Save Changes”

3.使用Fiddler开始抓包

打开浏览器访问WAP版新浪微博网站weibo.cn

Fiddler窗口左侧找到weibo.cn /pub/的数据包,并双击,这时我们就能够在右侧看到抓取到的信息.

找到Cookies字段,这正是我们需要的.

二.Cookies与保持登录

关于Cookies

维基百科是这样解释的:

Cookie(复数形态Cookies),中文名称为“小型文本文件”或“小甜饼”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

通俗来说就是服务器端为了确认用户终端的身份而设定的一种加密标识,它是存储在本地终端上的。

当然,随着Cookies技术的发展,Cookies的作用已经不止于用户身份标识。

当登陆一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。

如果勾选了,那么下次访问同一个网站时,用户会发现没输入用户名和密码就已经登录了。

这正是因为前一次登陆时服务器发送了包含登录凭据(用户名+密码的某种加密形式)的Cookie到用户的硬盘上。

第二次登录时,如果该Cookies尚未到期,浏览器会发送该Cookies,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。

三.Cookies模拟登录

下面将介绍使用 Fiddler 获取新浪微博 Cookies,然后使用 Requests 提交 Cookies 从而实现模拟登录。

抓取登录数据包

使用Fiddler抓取数据包.

获取Cookies

打开新浪微博WAP版页面(weibo.cn),点击登录,然后填写账号密码,勾选“记住登录状态”,切记要勾选此项.

登录成功后,从Fiddler中选择最新的那个weibo.cn,然后复制Cookies字段的内容,填写到代码内.

代码如下:

#!/usr/bin/env python

#coding=utf8

'''

遇到不懂的问题?Python学习交流群:1004391443满足你的需求,资料都已经上传群文件,可以自行下载!

'''

import urllib2

import re

# get your cookie from Fiddler11

cookie = 'your-cookie'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0',

'cookie': cookie

}

def visit():

url = 'http://weibo.com'

req = urllib2.Request(url, headers=headers)

text = urllib2.urlopen(req).read()

# print the title, check if you login to weibo sucessfully

pat_title = re.compile('

(.+?)')

r = pat_title.search(text)

if r:

print(r.group(1))

if __name__ == '__main__':

visit()

四.使用 Post 提交数据的方法实现模拟登录

由于使用Cookies登录存在很多的弊端,一般我们都使用Post提交数据的方法来实现模拟登录.

通过Fiddler来抓取http数据包来分析该网站的登录流程;

分析抓到的post包的数据结构和header,要根据提交的数据结构和heander来构造自己的post数据和header;

构造自己的HTTP数据包,并发送给指定url;

通过urllib2等几个模块提供的API来实现request请求的发送和相应的接收;

大部分网站登录时需要携带cookie,所以我们还必须设置cookie处理器来保证cookie.

notice:如果遇到登录后网站重定向到其他url这种情况,我们可以使用chrome的审查元素功能找出重定向后的网站url和该网站的提交数据,再次使用post方法就行.

代码如下:

import HTMLParser

import urlparse

import urllib

import urllib2

import cookielib

import string

import re

#登录的主页面

hosturl = '******' //自己填写

#post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据)

posturl = '******' //从数据包中分析出,处理post请求的url

#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie

cj = cookielib.LWPCookieJar()

cookie_support = urllib2.HTTPCookieProcessor(cj)

opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

urllib2.install_opener(opener)

#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)

h = urllib2.urlopen(hosturl)

#构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',

'Referer' : '******'}

#构造Post数据,他也是从抓大的包里分析得出的。

postData = {'op' : 'dmlogin',

'f' : 'st',

'user' : '******', //你的用户名

'pass' : '******', //你的密码

'rmbr' : 'true', //特有数据,不同网站可能不同

'tmp' : '0.7306424454308195' //特有数据,不同网站可能不同

}

#需要给Post数据编码

postData = urllib.urlencode(postData)

#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程

request = urllib2.Request(posturl, postData, headers)

print request

response = urllib2.urlopen(request)

text = response.read()

print text

python爬取微博设备显示怎么更改_Python定向爬虫模拟新浪微博登录相关推荐

  1. python爬取微博热搜写入数据库_python实现爬取微博热搜存入Mysql

    python爬取微博热搜存入Mysql最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站lin ...

  2. python爬取微博评论数据的github链接_GitHub - 13633825898/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...

    功能 爬取新浪微博信息,并写入csv/txt文件,文件名为目标用户id加".csv"和".txt"的形式,同时还会下载该微博原始图片(可选). 本程序需要设置用 ...

  3. python爬取微博评论数据的github链接_GitHub - guozifeng91/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...

    功能 爬取新浪微博信息,并写入csv/txt文件,文件名为目标用户id加".csv"和".txt"的形式,同时还会下载该微博原始图片和微博视频(可选). 本程序 ...

  4. python爬取微博评论数据的github链接_GitHub - DABOLUO111/weiboSpider: 新浪微博爬虫,用python爬取新浪微博数据...

    功能 爬取新浪微博信息,并写入csv/txt文件,文件名为目标用户id加".csv"和".txt"的形式,同时还会下载该微博原始图片和微博视频(可选). 本程序 ...

  5. python爬取微博评论超100页_python爬取新浪微博评论-Go语言中文社区

    简介 爬取微博m站评论.由于api限制只能爬取前100页,如果想要更全数据需爬pc端. 工具 python 3.5 requests库 re库 步骤 1. 登陆保存cookie 首先,打开m.weib ...

  6. python爬取页面内容由京东提_python制作爬虫爬取京东商品评论教程

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

  7. python 爬取数据还要下载scrapy吗_python网络爬虫之Scrapy

    本文分享的大体框架包含以下三部分 (1)首先介绍html网页,用来解析html网页的工具xpath (2)介绍python中能够进行网络爬虫的库(requests,lxml,scrapy等) (3)从 ...

  8. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

  9. python爬取微博热搜写入数据库_python爬虫爬取微博热搜

    [实例简介] [实例截图] [核心代码] import requests                #数据抓取库 from lxml import etree         #数据解析库 imp ...

  10. python爬取微博热搜数据并保存!

    主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur- 很多 ...

最新文章

  1. 强势安利7个广受好评的软件!助你一臂之力!
  2. PS色调均化滤镜的快捷实现(C#源代码)。
  3. JAVA 笔记no.2
  4. Struts2官网翻译
  5. 计算当前日期是一年中的第几周
  6. 在服务器上用Fiddler抓取HTTPS流量
  7. [渝粤教育] 西南科技大学 经济数学1 在线考试复习资料
  8. 都2021年了,c/c++开发竟然还能继续吃香??
  9. Wordpress表结构详细说明
  10. 让无线网卡同时工作在 AP 和 STA 模式
  11. {面试题4: 替换空格}
  12. Asp.net core 通过Models 生成数据库的方法
  13. DCDC电源芯片的引脚功能及应用-BUCK芯片和BOOST芯片
  14. centos7搭建aria2+yaaw
  15. 手把手教学 玩转苹果HomeKit
  16. 中国人民大学计算机考研贴吧,中国人民大学各专业考研经验分享 持续更新中...
  17. S7-1200循环中断OB30的使用方法及示例程序
  18. myaql数据库如何建表
  19. 子网掩码、IP地址数、掩码长度对照表
  20. 《简明美国史》笔记(陈勤著)

热门文章

  1. 【​观察】做好数据到介质的连接者 新数据时代浪潮存储的行与思
  2. 【题解】【AcWing】1564. 哈希
  3. Sony索尼HLG灰片电影调色LUT预设合集 HLG CINEMATIC LUTPACK BUNDLE
  4. 算法学习01- 生兔子的问题
  5. Java的运行机制(一)
  6. CReFF缓解长尾数据联邦学习(IJCAI 2022)
  7. 瑞利分布的平方是什么分布
  8. 我和宁夏日报 【白述礼】
  9. 企业单位Win 10家庭版如何打开Guest用户,并共享打印机
  10. R 18切割替换练习