python爬虫-事件触发机制

今天想爬取一些政策,从政策服务 (smejs.cn) 这个网址爬取,html源码找不到链接地址,通过浏览器的开发者工具,点击以下红框

分析预览可知想要的链接地址的id有了,进行地址拼接就行

点击标头可以看到请求后端服务器的api地址,通过拿到这个地址,编写python脚本,不会的可以让gpt帮你写,很好用

import requests
import pandas as pd
import logging
import time
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry# 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')# 请求头信息
headers = {'Content-Type': 'application/json','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}# 基础URL
base_url = 'https://policy-gateway.smejs.cn/policy/api/policy/getNewPolicyList'
base_policy_url = 'https://policy.smejs.cn/frontend/policy-service/'# 参数
params = {'orderBy': '','keyWords': '','genreCode': 'K,A,S,Z','queryPublishBegin': '','queryPublishEnd': '','queryApplyBegin': '','queryApplyEnd': '','typeCondition': '','publishUnit': '','applyObj': '','meetEnterprise': '','title': '','commissionOfficeIds': '','commissionOfficeSearchIds': '','industry': '','relativePlatform': '','level': '','isSearch': 'N','policyType': '','provinceValue': '江苏省','cityValue': '','regionValue': '','current': 1,'size': 15,'total': 23960,'page': 0
}# 总条目数和每页条目数
total_policies = 23960
page_size = 15
total_pages = (total_policies // page_size) + 1# 存储所有政策数据
all_policies = []# 配置重试策略
retry_strategy = Retry(total=5,status_forcelist=[429, 500, 502, 503, 504],allowed_methods=["HEAD", "GET", "OPTIONS"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
http = requests.Session()
http.mount("https://", adapter)
http.mount("http://", adapter)# 遍历每一页
for page in range(total_pages):params['current'] = page + 1try:response = http.get(base_url, headers=headers, params=params, verify=False)response.raise_for_status()except requests.exceptions.RequestException as e:logging.error(f"Failed to fetch data for page {page + 1}: {e}")continuedata = response.json()if 'records' not in data['data']:logging.error(f"No records found for page {page + 1}")continuerecords = data['data']['records']for record in records:policy_id = record.get('id')level_value = record.get('levelValue')title = record.get('title')type_value = record.get('typeValue')commission_office_names = record.get('commissionOfficeNames')publish_time = record.get('publishTime')valid_date_end = record.get('validDateEnd')policy_url = base_policy_url + policy_idall_policies.append({'ID': policy_id,'URL': policy_url,'Level Value': level_value,'Title': title,'Type Value': type_value,'Commission Office Names': commission_office_names,'Publish Time': publish_time,'Valid Date End': valid_date_end})logging.info(f"Fetched data for page {page + 1}")time.sleep(1)  # 防止过快请求# 转换为DataFrame
df = pd.DataFrame(all_policies)# 保存到Excel
df.to_excel('policies.xlsx', index=False)
logging.info("Data saved to policies.xlsx")

然后运行后,就等到爬取完成了,后面也可以多线程爬,还没试,不知道是否有防爬机制。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GraphHopper路径规划导航(Android源码调试运行)

本文主要记录在运行graphhopper安卓版路径规划导航源码的步骤和遇到的问题。 成功运行了程序,但是路劲规划一直不成功,问题一开始是服务地址,后来又是key的问题,在这个项目中涉及到了graphhopper、mapbox、mapilion的key&#xff…

html+css+js 实现马赛克背景按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)

这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…

生成式AI和LLM的革命:Transformer架构

近年来,随着一篇名为“Attention is All You Need”论文的出现,自然语言处理(NLP)领域经历了一场巨大的变革。2017年,在谷歌和多伦多大学发表了这篇论文后,Transformer架构出现了。这一架构不仅显著提升了N…

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我…

第 3 章 数据和 C

目录 3.1 示例程序 3.1.1 程序中的新元素 3.2 变量与常量数据 3.3 数据: 数据类型关键字 3.3.1 整数和浮点数 3.3.2 整数 3.3.3 浮点数 3.4 C 语言基本数据类型 3.4.1 int 类型 1. 声明 int 变量 2. 初始化变量 3. int 类型常量 4. 打印 int 值 5. 八进制和十六进…

Linux I2C驱动程序

Linux I2C驱动 前言 主要目的记录一下我在野火的i.MX6ULL mini开发板上面编写了一个Linux I2C设备驱动去驱动SSD1306 OLED屏幕的开发过程。源码用的是野火提供的内核源码。 SSD1306 OLED和I2C接口 这块OLED屏幕大家应该都比较熟悉了,小巧迷你,DIY很好…

习题2.24

没啥好说, 先看解释器给出的结果 说起来也简单,这是一个多层的列表,第一个元素是1 第二个元素是(2 ( 3 4)) 第二层第一个是2 第二个是 (3 4) 第三层第一个是 3 第二个…

stm32入门-----ADC模数转换器(理论篇——上)

目录 前言 一、ADC模数转换器 1.简介 2.ADC的结构 3.输入通道 4.转换模式 5.触发控制 6.数据对齐 7.转换时间 8.校准 前言 本期就开始学习ADC模数转换器,这个大家在学习51单片机的时候应该就接触过了,实际上就是把模拟电压转换为…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

认识到自己的无知,需要一定的智慧

知识本是补药,却被变成毒药——“新无知”的三种表现 今天,一个人如果把评书、演义、宫廷剧当作真实历史,把当年从教科书上学来的过时理论当做“观世界”的金科玉律,并以此嘲笑别人“无知”的,属于典型的“新古人”—…

线程的同步和优先级

文章目录 前言一、优先级和同步各是什么?二、使用方法 1.线程的优先级2.线程的同步总结 前言 线程不仅可以实现代码的单线程运行和并发运行,在线程安全的情况下,还可以实现共同处理相同的系统资源。该篇文章还介绍了开发者如何设置线程运行的…

【数据结构】单链表带头双向循环链表的实现

一、链表的概念及结构 1.链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 2.链表的结构 一般讲的链表包括数据域和指针域: 二、链表的种类 实际中链表的结构…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边…

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题,解决方法: 添加--allow-unrelated-histories,让git允许提交不关联的历史代码。 成功提交:

gitee的fork

通过fork操作,可以复制小组队长的库。通过复制出一模一样的库,先在自己的库修改,最后提交给队长,队长审核通过就可以把你做的那一份也添加入库 在这fork复制一份到你自己的仓库,一般和这个项目同名 现在你有了自己的库…

git 学习总结

文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

《GPT-4o mini:开启开发与创新的新纪元》

在科技发展的快速进程中,OpenAI 推出的 GPT-4o mini 模型如同一阵春风,给开发者们带来了新的希望和机遇。它以其卓越的性能和极具吸引力的价格,成为了行业内热议的焦点。 当我首次听闻 GPT-4o mini 的消息时,内心充满了好奇与期待…