爬虫之登陆验证


运行爬虫抓取某些网站的时候,经常会碰到需要登陆验证(输入账号、密码)之后才能获取数据的情况。那么问题来了,如何完成登陆验证呢?下面以itunes为例大概总结两种方法。主要使用工具为python/java、selenium、phantomjs或firefox/chrome等浏览器.

一 python urllib2库的简单介绍

本人之前主要使用java进行外部数据获取,用的工具包httpclient。基本没用过python-urllib2库,google了一下,发现两个特别靠谱的参考资料:

1. csdn中 @请叫我汪海的《urllib2的使用细节与抓站技巧》,学习了一下,发现还挺好使的,简单明了。

2. 另外一个可参考的资料是《urllib2 - The Missing Manual :HOWTO Fetch Internet Resources with Python》跟上面内容有重复,也有补充。

看完这两个基本就能大概掌握获取网页的用法啦,这里强调以下几点。

a. 特别注意要发送的headers。文中已经提到了User-Agent 、Content-Type 、application/xml 、application/json 、application/x-www-form-urlencoded,很多时候数据取不出来与这些header有关系。httpheader可以参照wiki《List of HTTP header fields》,当年瞎摸索的时候,没注意看好这些headers,吃了不少亏。

b. 注意使用debug模式来监测爬取过程中的信息,尤其是报错信息和报错码。错误码也请参照wiki《List_of_HTTP_status_codes》,充分利用这些错误码,也能缩短调试时间。当然,多打印try-except也是一种有效的调试手段。


二、登陆之数据包分析

工具: python-urllib2   |  firefox+firebug或者chrome,用浏览器打开登陆页面之后,按F12键会默认打开开发者工具或者启动firebug,点击network监听数据包,下面以itune的登陆举一个例子。


1. 在浏览器中输入itunes的登陆地址:https://itunesconnect.apple.com/itc/static/login?view=1&path=%2FWebObjects%2FiTunesConnect.woa,同时按F12启动firebug进行网络监听.


点击“网络” --》 ”全部“ ,可以看到所有加载的页面数据,包括html/图像/css/js等。

点击“html”,全部里边显示的信息太多,可以先只看html,这里边出现的html-url通常是我们需要用urllib2实际请求的页面。

下面是firefox+firebug显示的页面


而这个是chrome的开发者工具显示的页面


不同的工具监测到数据包会有差别,上面两个对比看一下,大概估计实际需要get的url,就只有2个。


2. 我们点开查看其中一个,重点关注一下相应的参数、头信息。(头信息中的Cookie字段和 后面的cookies表单中的内容是一致的)。

头信息又分为请求头信息和响应头信息。urlopen需要提交的头信息可能是请求头信息中的一部分。响应头信息中的字段可能会在访问下一个页面的时候用到。


3. 账号密码的输入通常都会涉及到一个post请求,我们可以输入一个错误的账号、密码试试

(输入正确

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值