处理动态分页:自动翻页与增量数据抓取策略-数据议事厅

爬虫代理

一、案例场景

Lily(挥舞着数据报表):“用户反馈我们的股票舆情分析总是缺失最新跟帖!这些动态分页像狡猾的狐狸,每次抓取都漏掉关键数据!”

小王(调试着爬虫代码):“传统分页参数已经失效了。看!(指向屏幕)这个「加载更多」按钮会变异——每次点击都会生成新的加密参数!”

动态分页化身黑衣刺客,手持带有时间戳的毒镖:「想要新数据?先破解我的身份令牌!」UserAgent检测如同城门守卫,将没有伪装的爬虫拒之门外。

import requests
from bs4 import BeautifulSoup
import time
import json

class GubaCrawler:
    def __init__(self):
        # 亿牛云代理配置(www.16yun.cn)
        self.proxy = {
            "http": "http://16YUN:16IP@yn-proxy.16yun.cn:3111", 
            "https": "http://16YUN:16IP@yn-proxy.16yun.cn:3111"
        }
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
            "Cookie": "em_hq_fls=js; sid=6d5b20..."  # 需要定期更新的动态cookie
        }
        self.visited_ids = set()  # 增量抓取存储器

    def parse_page(self, url):
        try:
            # 爬虫代理IP与浏览器指纹双保险
            response = requests.get(url, proxies=self.proxy, headers=self.headers, timeout=10)
            soup = BeautifulSoup(response.text, 'html.parser')
            
            # 东方财富股吧帖子解析
            posts = []
            for item in soup.select('.articleh'):
                post_id = item.get('data-postid')  # 唯一标识符
                if post_id in self.visited_ids:
                    continue
                
                title = item.select_one('.l3 a').text.strip()
                time = item.select_one('.l5').text
                # 更多字段解析...
                posts.append({"id":post_id, "title":title, "time":time})
                self.visited_ids.add(post_id)
            
            return posts
        except Exception as e:
            print(f"抓取异常:{str(e)}")
            return []

    def auto_pagination(self):
        base_url = "https://guba.eastmoney.com/list,002291_{}.html"
        page = 1
        while True:
            current_url = base_url.format(page)
            print(f"智能翻页中:{current_url}")
            
            data = self.parse_page(current_url)
            if not data:  # 终止条件判断
                print("到达最后一页!")
                break
                
            # 数据存储逻辑
            with open('guba_data.json', 'a', encoding='utf-8') as f:
                json.dump(data, f, ensure_ascii=False)
            
            page += 1
            time.sleep(3)  # 控制频率

if __name__ == '__main__':
    crawler = GubaCrawler()
    crawler.auto_pagination()

工程师召唤出「参数预言家」——通过逆向工程发现分页规律:每页URL中的页码呈等差序列变化,但需要配合动态生成的Cookie才能获得真实数据。

二、技术亮点解密

代理IP铠甲:通过亿牛云代理池实现IP身份轮换

身份伪装术:动态UserAgent+实时更新的Cookie

增量记忆水晶:用集合存储已抓取ID避免重复

时间迷雾:随机延时规避采集检测

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue.js 与 Axios 实现音乐自由

目录 文章目录 概要 技术名词解释 技术细节 歌曲搜索 歌曲播放 播放动画 小结 概要 使用 Vue.js 和 Axios 实现一个功能丰富的音乐播放器,让用户能够自由地搜索、播放和管理音乐。这个过程涉及到 Vue.js 的组件化开发、状态管理以及 Axios 的网络请求处理&am…

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…

[machine learning] DP(Data Parallel) vs DDP(Distributed Data Parallel)

DP和DDP是并行训练的两种方法&#xff0c;本文简单介绍它们两者的区别。 一、DP (Data Parallel) DP是单进程&#xff0c;多线程的&#xff0c;每个线程负责一个GPU&#xff0c;它只适用于一台机器。DP训练的流程如下图所示(图片转载自&#xff1a;https://medium.com/mlshar…

vue+dhtmlx-gantt 实现甘特图-快速入门【甘特图】

文章目录 一、前言二、使用说明2.1 引入依赖2.2 引入组件2.3 引入dhtmlx-gantt2.4 甘特图数据配置2.5 初始化配置 三、代码示例3.1 Vue2完整示例3.2 Vue3 完整示例 四、效果图 一、前言 dhtmlxGantt 是一款功能强大的甘特图组件&#xff0c;支持 Vue 3 集成。它提供了丰富的功…

CI/CD—Jenkins配置Maven+GitLab自动构建jar包

一、安装Maven插件通过Maven构建项目 1、在Jenkins上安装Maven Integration plugin插件 2、创建一个maven项目 2.1、填写构建的名称和描述等 2.2、填写连接git的url 报错&#xff1a;无法连接仓库&#xff1a;Error performing git command: git ls-remote -h http://192.168.…

基于DeepSeek的智慧医药系统(源码+部署教程)

运行环境 智慧医药系统运行环境如下&#xff1a; 前端&#xff1a; HTMLCSS后端&#xff1a;Java AIGCDeepseekIDE工具&#xff1a;IDEA技术栈&#xff1a;Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…

java BCC异或校验例子

需求 对一个十六进制的字符串进行BCC校验 方法 private static String XORCheck(String rawMsg) {// 16进制字符串需要转成10进制数组进行校验&#xff0c;然后再返回16进制字符串用于与原来的字符匹配byte[] bytes HexDumpMsgFormat.hexStr2DesBytes(rawMsg);return BytesUt…

保安员考试:巧用记忆术,攻克理论知识堡垒

保安员考试&#xff1a;巧用记忆术&#xff0c;攻克理论知识堡垒 一、构建知识框架&#xff0c;提纲挈领 保安员考试理论知识繁杂&#xff0c;涵盖保安基础理论、法律常识等多方面。首先要依据考试大纲&#xff0c;梳理出清晰的知识框架。以保安基础理论为例&#xff0c;将保安…

游戏引擎学习第145天

仓库:https://gitee.com/mrxiao_com/2d_game_3 今天的计划 目前&#xff0c;我们正在完成遗留的工作。当时我们已经将声音混合器&#xff08;sound mixer&#xff09;集成到了 SIMD 中&#xff0c;但由于一个小插曲&#xff0c;没有及时完成循环内部的部分。这个小插曲主要是…

ForceMimic:以力为中心的模仿学习,采用力运动捕捉系统进行接触丰富的操作

25年3月来自上海交大卢策吾教授团队的论文“ForceMimic: Force-Centric Imitation Learning with Force-Motion Capture System for Contact-Rich Manipulation”。 在大多数接触丰富的操作任务中&#xff0c;人类会将随时间变化的力施加到目标物体上&#xff0c;以补偿视觉引…

ERROR:L6002U 一种解决方案

1.问题描述 前面的文章也讲到过有一次出现&#xff0c;这次再看一下为什么 打开这个文件&#xff0c;以及它的头文件 源文件报错信息&#xff1a; 2、原因查找 这是由于不同的人上传不同的工程&#xff0c;拉取更新导致的&#xff0c;可能的原因是keil文件夹的组织方式。 很…

GPU加速生信分析-宏基因组MAG去污染

Deepurify利用多模态深度语言模型来过滤污染的基因组&#xff0c;从而提高了宏基因组组装基因组&#xff08;MAGs&#xff09;的质量&#xff0c;并且可以利用GPU加速。 宏基因组组装的基因组 &#xff08;MAG&#xff09; 为使用宏基因组测序数据探索微生物暗物质提供了有价值…

AI与SEO关键词智能解析

内容概要 人工智能技术正重塑搜索引擎优化的底层逻辑&#xff0c;其核心突破体现在关键词解析维度的结构性升级。通过机器学习算法对海量搜索数据的动态学习&#xff0c;AI不仅能够识别传统TF-IDF模型中的高频词汇&#xff0c;更能捕捉语义网络中隐含的关联特征。下表展示了传…

【已解决】最新 Android Studio(2024.3.1版本)下载安装配置 图文超详细教程 手把手教你 小白

前言 设置 Android 开发环境&#xff0c;主要包括&#xff1a; 下载Java Development Kit&#xff08;JDK&#xff09;安装 Android Studio&#xff08;集成开发环境&#xff09; 下载Android SDK 一、JDK Android Studio 自带了 OpenJDK&#xff0c;通常无需额外安装。 如…

LLM中的transformer结构学习(二 完结 Multi-Head Attention、Encoder、Decoder)

文章目录 LLM中的transformer结构学习&#xff08;二 完结 Multi-Head Attention、Encoder、Decoder&#xff09;Self-Attention &#xff08;自注意力机制&#xff09;结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMas…

TDengine 接入帆软 BI 工具

1. 简介 帆软 BI 和 TDengine 在数据分析和可视化领域有紧密的合作关系&#xff0c;帆软是中国专业的大数据 BI 和分析平台提供商&#xff0c;其核心产品包括 FineReport 和 FineBI 等。帆软的 BI 工具广泛应用于各类企业&#xff0c;帮助用户实现数据的可视化分析、报表生成和…

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名&#xff0c;并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名&#xff0c;并连续按两次…

NET400系列协议网关技术方案

NET400系列协议网关技术方案 1. 问题背景 工业现场普遍存在多品牌设备异构通信难题&#xff1a; 协议碎片化&#xff1a;西门子&#xff08;Profinet/S7-TCP&#xff09;、罗克韦尔&#xff08;EtherNet/IP&#xff09;、三菱&#xff08;MC Protocol&#xff09;等设备协议…

如何用Kimi生成PPT?秒出PPT更高效!

做PPT是不是总是让你头疼&#xff1f;&#x1f629; 快速制作出专业的PPT&#xff0c;今天我们要推荐两款超级好用的AI工具——Kimi 和 秒出PPT&#xff01;我们来看看哪一款更适合你吧&#xff01;&#x1f680; &#x1f947; Kimi&#xff1a;让PPT制作更轻松 Kimi的生成效…

深入理解Java中的static关键字及其内存原理

static是Java中实现类级共享资源的核心修饰符&#xff0c;它突破了对象实例化的限制&#xff0c;使得变量和方法能够直接与类本身绑定。这种特性让static成为构建工具类、全局配置等场景的利器&#xff0c;但同时也带来独特的内存管理机制需要开发者关注。 static修饰成员变量…