基于异步协程的增量式微博网页版爬虫(一)思路篇

news/2024/9/21 14:32:36

项目介绍

本项目旨在利用高级搜索功能,爬取微博网页版的详细数据。而大多数爬虫以单线程为主,但单线程存在资源利用率低的不足,针对这以问题,本项目主要使用如下技术:
(1)多线程+协程技术+Redis实现增量式爬虫。实现过程中存在两个技术难点:一是使用redis数据传输时开销频繁,服务器容易崩溃;二是多线程会存在线程抢占资源的问题,这里借鉴了多窗口售票的思路解决了问题。
(2)实现爬取不同时间段的数据,包含实时数据、自定义时间段数据,并自动识别数据是否展示完全,尽可能保证数据都能爬取到。

相关技术

增量式爬虫

增量式爬虫:指在已有爬取结果的基础上,仅爬取新增的数据,并对已爬取的数据进行去重。
本项目采用两种去重,分别是URL去重和数据去重,分别采用Redis、PostGreSQL存储。

URL去重:需爬取的URL存储至Redis的set中,若当前爬取的URL已存在set中,则不更新set。
数据去重:将已爬取的数据存储在PostGreSQL数据库中,每次爬取前先从数据库读取所有已爬取数据,再与当前爬取的数据进行对比,仅爬取新增数据。

多线程

即在进程中引入多个线程实现任务并发执行,能够提高CPU的利用率,但存在资源锁的问题。

异步协程

由于计算机资源是有限的,不可能存在新的任务继续创建新的线程,这样无限创建大量线程会占用较多资源,因此,将任务调度优化从操作系统内核转移到代码片(程序)中,也就是协程。协程的上下文转换比多线程快。而进程、线程都是同步的,协程是异步的。协程具备同步的编程方式又有异步的性能
但对于计算型的操作,利用协程来回切换执行,没有任何意义,来回切换并保存状态 反倒会降低性能。
IO型的操作,利用协程在IO等待时间就去切换执行其他任务,当IO操作结束后再自动回调,那么就会大大节省资源并提供性能,从而实现异步编程(不等待任务结束就可以去执行其他代码)。

实现思路

站点分析

不同架构的站点分析见https://www.cnblogs.com/Gimm/p/18190005
考虑API采集数量有限,请求次数有限,移动端数据较少,而网页端具有高级搜索功能,虽然限制最大页数为50页,但可以细化时间粒度采集更多数据。
由于采集转发类型的博文会存在重复数据,故仅考虑采集原创博文。
根据高级搜索功能的所有参数,这里定义自定义参数有:关键词、时间,固定参数:类型=原创,包含=全部
image

构造一级页面URL

image

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

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

相关文章

(9)FIFO ip核

一、FIFO简介 二、FIFO ip使用 使用方案: 操作: 在IP Catalog中找到这个 配置fifo: 生成ip:

imx6ull Linux内核构建

IMX6ULL的Linux内核编译步骤用户文档下载 在NXP官网的文档搜索界面,搜索Linux和User两个关键字就能查询到相关的文档 官网文档搜索地址:https://www.nxp.com.cn/design/documentation:DOCUMENTATION#/内核下载 在上面文档的第七章有交怎么下载以及编译内核#git安装 sudo apt-…

MASM中Group的作用

Masm5以后推出的simplified segment模式及.model标准模型中,都将段组合成一个group,group的作用及优点是什么呢? 一、Group的作用: 将组(group)后的所有段加入一个组,位于这些段内的的label(标号)或variables(变量)的偏移地址都参照Group的起始地址进行计算,而不是所在…

数量性状遗传参数的提出

001、 此间的代表人物主要有美国的动物育种学家 J. L. 勒什 ( Lush) , 他提出了数量遗传学中的两个重要参数: 遗传力 ( heritability) 和重复力 ( repeatability) 的概念以及合并选择理论; 其后, 他的学生 L. N.赫兹 ( Hazel) 提出了另一个重要参数: 遗传相关 ( genetic correl…

文件IO操作

系统IO函数接口规范,标准C库提供的标准IO函数接口规范。文件操作 cache:是读的缓冲区,读内容先读到cache中,是读的加速机制 buffer:是写的缓冲区,写内容先写到buff中,是写的加速机制 对一个文件的操作有两种不同的方式,既可以使用由操作系统直接提供的编程接口 (API),…

[sunj的科普系列 一] : 科技革命离我们又近一步

一、MESSAGES May 13, 2024,OpenAI重磅发布GPT-4o。 名字来源:omni是全能的意思。笔者对于AI领域了解一点点,单单看它的描述你就知道这次的升级多么爆炸了。 step towards much more natural human-computer interaction—it accepts as input any combination of text, aud…

PYTHON、R对小说文本挖掘正则表达式分析案例

原文链接:http://tecdat.cn/?p=5673 原文出处:拓端数据部落公众号《第二十二条军规》是美国作家约瑟夫海勒创作的长篇小说,该小说以第二次世界大战为背景,通过对驻扎在地中海一个名叫皮亚诺扎岛(此岛为作者所虚构)上的美国空军飞行大队所发生的一系列事件的描写,揭示了…

R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

原文链接:http://tecdat.cn/?p=5689 原文出处:拓端数据部落公众号判别分析包括可用于分类和降维的方法。线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术。二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间…