python爬虫-事件触发机制

news2024/11/24 16:42:41

今天想爬取一些政策,从政策服务 (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 + 1
    try:
        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}")
        continue
    
    data = response.json()
    
    if 'records' not in data['data']:
        logging.error(f"No records found for page {page + 1}")
        continue
    
    records = 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_id
        
        all_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.coloradmin.cn/o/1953200.html

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

相关文章

女人内裤怎么洗才是最干净?内衣裤洗衣机怎么样?哪个牌子更好?

最近刚好用到一款比较好用的洗内衣裤洗衣机!如果你也和我一样有洗内衣裤烦恼的,或者可以看看! 内衣裤作为贴身穿的衣服,我是不会把它和外衣一起清洗的,而家里面的大洗衣机已经担起了清洗外衣的工作! 朋友们…

React Router-v6.25.1

以下例子是根据vitereactts构建的,使用路由前先安装好这些环境!!!! 1、路由的简单使用 首先要创建一个浏览器路由器并配置我们的第一个路由。这将为我们的 Web 应用启用客户端路由。 该main.jsx文件是入口点。打开它…

【杰理蓝牙开发】AC695x 音频部分

本文主要记录 杰理蓝牙audio接口的使用,包括ADC和DAC原理的介绍和API接口的使用。 【杰理蓝牙开发】AC695x 音频部分 0. 个人简介 && 授权须知1. ADC【音频数据采集】硬件部分1.1 单片机引脚1.2 硬件电路设计1.3 MIC 输入通路解释 2. 【DAC】音频信号编解码…

GLSL教程 第9章:计算着色器

目录 9.1 计算着色器的基本概念 计算着色器的主要特点: 9.2 计算着色器的基础知识 1. 创建计算着色器 计算着色器代码: 2. 编译和链接计算着色器 示例代码: 3. 执行计算着色器 示例代码: 9.3 实现并行计算和数据并行处理…

51单片机-第五节-串口通信

1.什么是串口? 串口是通讯接口,实现两个设备的互相通信。 单片机自带UART,其中引脚有TXD发送端,RXD接收端。且电平标准为TTL(5V为1,0V为0)。 2.常见电平标准: (1)TTL电…

Mysql中如何实现两列的值互换?给你提供些思路。

文章目录 Mysql中如何实现两列的值互换1、第一感觉此sql应该能处理问题了2、需要一个地方存要替换的值,不然两列搞不定。2.1 加第三列?(能解决,但是看起来呆呆)2.2 上临时表(搞点弯路走走) 示例…

C语言画蜡烛图

GPT-4o (OpenAI) 在C语言中,绘制蜡烛图(Candlestick Chart)不是直接的任务,因为C语言本身不包含高级图形绘制库。然而,可以通过某些图形库来完成这项任务,例如使用GTK、SDL、OpenGL等。 以下是通过GTK库绘…

【iOS】—— retain\release实现原理和属性关键字

【iOS】—— retain\release实现原理和属性关键字 1. retain\reelase实现原理1.1 retain实现原理1.2 release实现原理 2. 属性关键字2.1 属性关键字的分类2.2 内存管理关键字2.2.1 weak2.2.2 assgin2.3.3 strong和copy 2.4 线程安全的关键字2.5 修饰变量的关键字2.5.1常量const…

北京率先建设AI原生城市,力争明年推出百个优秀行业大模型产品

7月26日,《北京市推动“人工智能”行动计划(2024-2025年)》(简称《行动计划》)正式向社会发布,新京报记者在北京市发展和改革委员会举行的新闻发布会上获悉,北京将率先建设AI原生城市&#xff0…

基于JSP的班级同学录网站

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:JSPB/S架构 工具:Eclipse、Mysql 系统展示 首页 管理员功能界面 用户功能界面 论坛管…

ubuntu上部署vue项目到ngixn中+SpringBoot项目+postgresql数据库

文章目录 前提1.Ubuntu上安装ngix2.部署Vue项目2.1上传vue项目2.2.配置 3.Ubuntu上安装Postgres4.部署springboot项目 前提 记一次在ubuntu部署前端vue和后端springboot项目,以及数据库postgresql的安装以及启动、停止等常用的命令。 1.Ubuntu上安装ngix 1、检查…

探索 Python 的色彩世界:Colorama 库深度解析

文章目录 🌈 探索 Python 的色彩世界:Colorama 库深度解析背景:为何选择 Colorama?Colorama 是什么?如何安装 Colorama?简单库函数使用方法场景应用示例常见问题及解决方案总结 🌈 探索 Python …

Gartner发布2024年零信任网络技术成熟度曲线:20项零信任相关的前沿和趋势性技术

大多数组织都制定了零信任信息安全策略,而网络是零信任实施领域的顶级技术。此技术成熟度曲线可以帮助安全和风险管理领导者确定合适的技术,以将零信任原则嵌入其网络中。 战略规划假设 到 2026 年,15% 的企业将在企业拥有的局域网上用 ZTNA …

HarmonyOS 质量、测试、上架速浏

1.应用质量要求: 1. 应用体验质量建议: 功能数据完备 功能完备 数据完备 基础体验要求 基础约束 兼容性 稳定性 性能 功耗 安全…

Yolov5-v7.0使用CBAM注意力机制记录

Yolov5-v7.0使用CBAM注意力机制记录 一、CBAM实现代码 在model/common.py文件中加入如下代码: #############CBAM注意力机制############## class ChannelAttention(nn.Module):def __init__(self, in_planes, ratio16):super(ChannelAttention, self).__init__(…

【Windows】激活补丁被误删,怎么办?如何关闭Windows11安全中心中的“病毒和威胁保护”!

按下“win(徽标键)i”快捷键,选择隐私与安全性-Windows安全中心。 选择防火墙和网络保护-域保护。 将开关闭,专业网络和公用网络防火墙也同样关闭,如下图所示: 关闭防火墙后,左边菜单…

改进向量搜索-使用PostgresML和LlamaIndex重新排名

改进向量搜索-使用PostgresML和LlamaIndex重新排名 搜索和重新排名:提高结果相关性 搜索系统通常采用两种主要方法:关键字和语义。关键字搜索将精确的查询词与索引数据库内容匹配,而语义搜索使用 NLP 和机器学习来理解查询上下文和意图。许多…

【踩坑系列-Docker】基于Alibaba Cloud Linux3基础镜像安装Nginx

Author:赵志乾 Date:2024-07-26 Declaration:All Right Reserved!!! 1. 问题描述 使用Alibaba Cloud Linux3作为基础镜像,在其上安装Nginx,对应的Dockerfile内容如下: …

使用 From File 模块加载数据

目录 检查模型 创建时间和信号数据 加载 timeseries 数据 加载数组数据 加载总线数据 此示例说明如何使用 From File 模块从 MAT 文件加载仿真输入数据,包括如何创建和格式化输入数据。可以通过编程方式创建您加载的数据,加载从另一个仿真中记录的数据,或加载从…