[python]利用urllib+urllib2解决爬虫分页翻页问题

本文介绍如何使用Python的urllib2模块解决翻页数据抓取的问题,特别是当翻页操作不会改变URL的情况下。文章详细展示了如何通过分析网页源代码找到正确的POST参数,并利用urllib2进行POST请求来获取不同页面的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近由于公司的自动化测试工具需要将测试结果导出到excel中,奈何没有学SSH,导致无法在工具本身中添加(工具是开发做的),故转而使用python爬虫来做,开发过程中遇到了一个问题:

  由于测试结果太多,需要翻页,而翻页时网址没有变化,这就导致抓取的时候没法依照网址去爬,遂去网上查找解决方法,最后找到利用urllib2提交post的方法来解决。

解决过程:

  

网址不变,而如果是用selenium的话,我又觉得太慢,毕竟selenium是用来做验收测试的,不是用来爬数据的。言归正传,利用urllib2提交post的方法来获取翻页数据的话,首先的找到网页对应的post,首先我找到了这个:

{'topage':'3'}

 

和这个:

{'pageNow':'3'}


(后者是正确的)

这需要大家自己去网页里找规律,不一定被放到了哪个位置,我因为工具是公司开发写的,我在他的页面代码里找到了如下这段:

所以确定是{'pageNow':'3'}是对的。

 

既然找到post的键值,那接下来的事就简单了:

 1  2 url = 网络地址
 3 #需要提交给表单键值对
 4 query = {'pageNow':'3'}
 5 
 6 #urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参
 7 #数。例如 字典{'name': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&
 8 #age=200"
 9 date = urllib.urlencode(query)
10 #向服务器端发送请求
11 post = urllib2.Request(url,date)
12 #接收服务端返回的内容
13 response  = urllib2.urlopen(request)
14 #转化为页面代码
15 page = response.read()
16 
17 
18 print page

以上,控制台上显示出来的就是第三页的代码,这时大家就可以用正则去匹配自己需要的东西了\(^o^)/~

转载于:https://www.cnblogs.com/yuexizhuo/p/3946178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值