,,python爬虫之模拟登陆csdn的实例代码

,,python爬虫之模拟登陆csdn的实例代码

今天小编就为大家分享一篇大蟒爬虫之模拟登陆csdn的实例代码,具有很好的参考价值希望对大家有所帮助。一起跟随小编过来看看吧

大蟒模拟登陆网页主要使用到urllib、urllib2、cookielib及美丽的声音等基本模块,当然进阶阶段我们还可以使用像要求等更高级一点的模块。其中美丽的声音模块在匹配超文本标记语言方面,可以很好的代替re,使用起来更方便,对于不会使用正则的人来说是福音。

本文使用python2.7

原理

模拟登陆前,我们需要先知道csdn是如何登陆的。我们通过谷歌浏览器浏览器先来分析下:

1 .铬合金浏览器用F12或ctrl shift I启动开发者工具,并访问csdn登陆页面,在开发者工具中对”Preserver log”选项打勾,表示跳转时不清楚之前的访问记录。

2.输入用户名密码后,网页进行跳转,此时我们查看访问记录中方法为邮政的链接的标题,可以看到

Request header:

缓存控制:无缓存

缓存控制:无存储

连接:保持活动状态

内容编码:gzip

内容类型:文本/html;字符集=UTF-8

日期:Fri,格林威治时间2016年8月5日03时51分56秒

到期时间:1970年一月一日星期四00:00:00 GMT

保持活动状态:超时=20

杂注:无缓存

服务器:openresty

设置饼干:UD=今天不走,明天即使跑也不一定跟得上!域=.csdn.net路径=/

set-Cookie:UserName=yang d 1987;域=.csdn.net路径=/

set-Cookie:UserInfo=rjxwn 4 of ich 68 zvtzejjjxlcez 5 o+8 rmsvvaitv 6 uo 4n 4 q 1或cub fzz 29 qx+uz 7 jpfqqivvfgwfac 97 NPT/kht cz 2u++ zivontu 5n tyg 717 xmpehcoutwnmg/5s 8 zlarza 8h 48 toftwujub 0 mxylq==;域=.csdn.net路径=/

set-Cookie:用户nick=man 8 er域=.csdn.net路径=/

set-Cookie:AU=A3E;域=.csdn.net路径=/

set-Cookie:CASTGC=TGT-63516-e4e 600 ADR 5 wijafintpehqncpgrvo 9 w 7 NH byt 5 Xu CCC 2 bpcccg-passport。csdn。网;path=/;安全的

set-Cookie:UN=yang d 1987;Domain=.csdn.netexpires=2017年8月5日星期六格林威治时间03:51:55;路径=/

set-Cookie:UE=' yangd 1987 @ 163。com’;版本=1;domain=. csdn . net max-Age=31536000;过期=2017年年8月5日星期六格林威治时间03:51:55;路径=/

set-Cookie:BT=1470369115868;Domain=.csdn.netexpires=2017年8月5日星期六格林威治时间03:51:55;路径=/

set-Cookie:access-token=0bd 99 cf 6-c5bf-4683-89 b8-9d 8678 bebf 9;域=.csdn.net路径=/

传输编码:分块

变化:接受-编码

有以上可以看出登陆过程中有甜饼干

POST提交的数据:

用户名:XXXXXXXXX

密码:XXXXXXXXX

SQE gcid

执行:e15s1

_eventId:提交

其中用户名和密码表示我们登陆的账户和密码,那lt,执行表示什么呢?不要急,我们看看登陆页面网站的源代码:

表单id=' fm1 ' action='/帐户/登录?" from=http://my。csdn。net/my/mycsdn "方法="post "

输入id=' password ' name=' password ' tabindex=' 2 ' placeholder='输入密码class=' pass-word ' type=' password ' value=' ' autocomplete=' off '

div class='行忘记密码'

span=col-xs-6 col-sm-6 col-MD-6 col-LG-6

输入类型=' checkbox ' name=' memory me ' id=' memory me ' value=' true ' class=' auto-log in ' tabindex=' 4 '

='记住我'的标签下次自动登录/标签

/span

这是一个很好的例子忘记跟踪-ad' data-mod='popu_26 '

a href='/account/fpwd?action=forgotpasswordampservice=http://my。csdn。net/my/mycsdn ' rel='外部无follow ' tabindex=' 5 ' target=' _ blank '忘记密码/a

/span

/div

!-该参数可以理解成每个需要登录的用户都有一个流水号。只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。 -

输入类型=' hidden ' name=' LT ' value=' LT-53452-vlvc 2 gjfxdj 4 jheoujqrkixgodzfc 3 '

输入类型='隐藏'名称='执行'值='e16s1 '

输入id='用户名name='用户名tabindex='1 '占位符='输入用户名/邮箱/手机号值='用户名class=' user-name ' type=' text ' input type=' hidden ' name=' _ eventId ' value=' submit '

输入class=' logging '访问键=' l '值='登录tabindex='6' type='button '

/表单

上面注释的内容就是说明参数它和执行的,就是在登陆过程中webflow会动态分配一个流水号LT-53452-vlvc 2g jfxdj 4 jheoujqrkixgodzfc 3,我们只用获取到这个流水号才能够进行登陆。

从上面通过铬分析得到,登陆csdn必须有甜饼干并且获取到webflow分配的流水号;并且访问时必须有用户代理,否则客户端会被屏蔽。

实现

1.由于我们的系统是centos6.5,默认使用python2.6,因此我们需要先安装python2.7并安装相关第三方模块

(1)百胜安装

rpm-Uvh https://centos6.iuscommunity.org/ius-release.rpm

好吃的安装python 27 python 27-devel python 27-pip python 27-设置工具

#安装相关第三方模块

pip2.7安装beautifulsoup4

pip2.7安装lxml

(2)编译安装

安装python.2.7

wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz

tar -zxvf Python-2.7.12.tgz

cd Python-2.7.12。/configure-前缀=/usr/local/python 2.7

制作制作安装

#环境变量

vim /etc/profile

导出路径=/usr/local/python 2.7/bin:$ PATH

来源/etc/配置文件

#安装setuptools

wget https://pypi。python。org/packages/46/db/baa 571 da 945 ff 731 f 3739 a 119574 e 89 b 12 add 9 b 05 c 03842103 BD 641d 0990/设置工具-25。1 .3 .焦油。gz # MD5=0 dcb 9990901 CB 6e 9631 db 195d 4 e 75 a 7

塔尔-zxvf setuptools-25.1.3.tar.gz

激光唱片安装工具-25.1.3

python2.7 setup.py安装

#安装点

wget https://pypi。python。org/packages/E7/A8/7556133689 add 8d 1 a 54 c 0 b 14 aeff 0 ACB 03 c 64707 ce 100 ECD 53934 da 1 aa 13/pip-8。1 .2 .焦油。gz # MD5=87083 c 0 b 9867963 b 29 f 7 ABA 3613 e 8 f4a

塔尔-zxvf pip-8.1.2.tar.gz

cd pip-8.1.2

python2.7 setup.py安装

#安装相关第三方模块

pip2.7安装beautifulsoup4

pip2.7安装lxml

注意:通过编译安装的pip2.7安装lxml会报错,因此还是建议使用妙的安装的pip2.7

2.代码实现

vim csdn_login.py

#!/usr/bin/env python2.7

#-*-编码:utf-8 -*-

导入urllib

导入urllib2

导入库奇利布

从bs4导入美丽的声音

filename='cookie_csdn.txt '

#声明一个MozillaCookieJar对象实例来保存饼干,之后写入文件

cookie=cookielib .MozillaCookieJar(文件名)

#利用urllib2库的HTTPCookieProcessor对象来创建甜饼干处理器

handler=urllib2 .HTTPCookieProcessor(cookie)

#通过处理者来构建开启工具

opener=urllib2.build_opener(处理程序)

loginurl='https://passport.csdn.net/account/login?from=http://my。csdn。' net/my/mycsdn '

#登陆前准备:获取它和执行

response=opener.open(loginurl)

汤=美汤(回应。read(),' lxml ')

对于soup.form.find_all('输入')中的输入:

if input.get('name')=='lt ':

lt=input.get('值)

如果输入。get(' name ')==' execution ':

execution=input.get('值)

#帖子信息

值={

用户名":"用户名,

密码":"密码,

lt':lt,

'执行:执行,

_eventId ':'提交'

}

postdata=urllib.urlencode(值)

开场。add headers=[(' User-Agent ',' Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/51。0 .2704 .63 Safari/537.36 ')]

#模拟登录,保存甜饼干到cookie.txt中

result=opener.open(loginurl,postdata)

饼干。保存(ignore _ discard=True,ignore_expires=True)

#登陆后我们随意跳转到博客

URL=' http://博客。csdn。' net/XXXXXXXXX '

result=opener.open(url)

3.运行

python2.7 csdn_login.py

至此,当我们登陆后,可以随意指定一个页面进行登陆了。

总结

1.urllib和urllib2配合使用,因为urllib可以将邮政数据进行编码,而urllib2不可以

2.由于使用饼干,标题等,用到了urllib2的基础库开启工具实现访问等操作,当然也可以使用urllib2 .请求(网址,数据、标题)等其他访问方式。

3.每个网站登录方式可能不一样,我们需要根据实际情况分析。

4.模拟登陆是我们通过实战学习python的一种方法,而不是用它来恶意攻击。

以上这篇大蟒爬虫之模拟登陆csdn的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: