Python怎么用requests模块实现动态网页爬虫
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下Python怎么用requests模块实现动态网页爬虫,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发工具Python版本: 3.6.4相关模块:urllib模块
千家信息网最后更新 2025年11月08日Python怎么用requests模块实现动态网页爬虫
小编给大家分享一下Python怎么用requests模块实现动态网页爬虫,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
开发工具
Python版本: 3.6.4
相关模块:
urllib模块;
random模块;
requests模块;
traceback模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
那我们就开启爬虫的正确姿势吧,先用解析接口的方法来写爬虫。
首先,找到真实请求。右键检查,点击Network,选中XHR,刷新网页,选择Name列表中的jsp文件。没错,就这么简单,真实请求就藏在里面。
我们再仔细看看这个jsp,这简直是个宝啊。有真实请求url,有请求方法post,有Headers,还有Form Data,而From Data表示给url传递的参数,通过改变参数,咱们就可以获得数据!为了安全,给自个Cookie打了个马赛克
我们尝试点击翻页,发现只有pagesnum参数会变化。
1 from urllib.parse import urlencode2 import csv3 import random4 import requests5 import traceback6 from time import sleep7 from lxml import etree #lxml为第三方网页解析库,强大且速度快
1 base_url = 'http://www.hshfy.sh.cn/shfy/gweb2017/ktgg_search_content.jsp?' #这里要换成对应Ajax请求中的链接23 headers = {4 'Connection': 'keep-alive',5 'Accept': '*/*',6 'X-Requested-With': 'XMLHttpRequest',7 'User-Agent': '你的User-Agent',8 'Origin': 'http://www.hshfy.sh.cn',9 'Referer': 'http://www.hshfy.sh.cn/shfy/gweb2017/ktgg_search.jsp?zd=splc',10 'Accept-Language': 'zh-CN,zh;q=0.9',11 'Content-Type': 'application/x-www-form-urlencoded',12 'Cookie': '你的Cookie'13 }构建get_page函数,自变量为page,也就是页数。以字典类型创建表单data,用post方式去请求网页数据。这里要注意要对返回的数据解码,编码为’gbk’,否则返回的数据会乱码!
1def get_page(page):2 n = 33 while True:4 try:5 sleep(random.uniform(1, 2)) # 随机出现1-2之间的数,包含小数6 data = {7 'yzm': 'yxAH',8 'ft':'',9 'ktrqks': '2020-05-22',10 'ktrqjs': '2020-06-22',11 'spc':'',12 'yg':'',13 'bg':'',14 'ah':'',15 'pagesnum': page16 }17 url = base_url + urlencode(data)18 print(url)19 try:20 response = requests.request("POST",url, headers = headers)21 #print(response)22 if response.status_code == 200:23 re = response.content.decode('gbk')24 # print(re)25 return re # 解析内容26 except requests.ConnectionError as e:27 print('Error', e.args) # 输出异常信息28 except (TimeoutError, Exception):29 n -= 130 if n == 0:31 print('请求3次均失败,放弃此url请求,检查请求条件')32 return33 else:34 print('请求失败,重新请求')35 continue构建parse_page函数,对返回的网页数据进行解析,用Xpath提取所有字段内容,保存为csv格式。
1def parse_page(html):2 try:3 parse = etree.HTML(html) # 解析网页4 items = parse.xpath('//*[@id="report"]/tbody/tr')5 for item in items[1:]:6 item = {7 'a': ''.join(item.xpath('./td[1]/font/text()')).strip(),8 'b': ''.join(item.xpath('./td[2]/font/text()')).strip(),9 'c': ''.join(item.xpath('./td[3]/text()')).strip(),10 'd': ''.join(item.xpath('./td[4]/text()')).strip(),11 'e': ''.join(item.xpath('./td[5]/text()')).strip(),12 'f': ''.join(item.xpath('./td[6]/div/text()')).strip(),13 'g': ''.join(item.xpath('./td[7]/div/text()')).strip(),14 'h': ''.join(item.xpath('./td[8]/text()')).strip(),15 'i': ''.join(item.xpath('./td[9]/text()')).strip()16 }17 #print(item)18 try:19 with open('./law.csv', 'a', encoding='utf_8_sig', newline='') as fp:20 # 'a'为追加模式(添加)21 # utf_8_sig格式导出csv不乱码22 fieldnames = ['a', 'b', 'c', 'd', 'e','f','g','h','i']23 writer = csv.DictWriter(fp,fieldnames)24 writer.writerow(item)25 except Exception:26 print(traceback.print_exc()) #代替print e 来输出详细的异常信息27 except Exception:28 print(traceback.print_exc())遍历一下页数,调用一下函数
1 for page in range(1,5): #这里设置想要爬取的页数2 html = get_page(page)3 #print(html)4 print("第" + str(page) + "页提取完成")效果:
看完了这篇文章,相信你对"Python怎么用requests模块实现动态网页爬虫"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
模块
网页
数据
爬虫
函数
参数
页数
动态
乱码
信息
内容
方法
格式
环境
篇文章
检查
输出
强大
之间
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全讲座观后感三百字
软件开发单招考试报几类
宁德软件开发外包
军方网络安全北信源
服务器网络上下行速度不一致
云服务器敏感文件怎么安全
四川千华网络技术有限公司
数据库导入时屏保
跑腿软件开发那家好
国外软件开发平台
萨菲网络技术
领导干部网络安全意识重要性
上海互联网科技公司注册
工业网络安全的宣传片
宝山区软件开发服务电话
开发服务器权限管理原则
异构智能服务器
本科毕业论文 改数据库
成都网络安全员考试题库
网络安全防范工作手册心得体会
网络安全在生活中的运用
体检者报告单数据库
软件开发运维依据
授权登录时服务器错误
数据库系统故障恢复实现技术
北京主要看气质网络技术
软件开发在五行中算什么
矩阵储存服务器管理
dao vb 数据库
传奇62区洛阳服务器三色剑