CN111611463A - 一种基于Scrapy-Redis的分布式网络爬虫优化方法 - Google Patents
一种基于Scrapy-Redis的分布式网络爬虫优化方法 Download PDFInfo
- Publication number
- CN111611463A CN111611463A CN202010317200.5A CN202010317200A CN111611463A CN 111611463 A CN111611463 A CN 111611463A CN 202010317200 A CN202010317200 A CN 202010317200A CN 111611463 A CN111611463 A CN 111611463A
- Authority
- CN
- China
- Prior art keywords
- request
- idle
- crawler
- node
- idle time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5061—Pools of addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于Scrapy‑Redis的分布式网络爬虫优化方法,包括以下方面:(1)去重过程优化:使用布隆过滤器代替指纹去重机制,在优化后的去重过程中,元素集合使用位数组形式表示;(2)空闲监测机制:设置一个空闲时间阈值作为分界条件,在接收到某节点的空闲信号之后,若监听到空闲时间小于等于空闲时间阈值,则节点继续工作;若监听到空闲时间大于空闲时间阈值,则可以判定为该节点暂无待爬取任务,即可结束此节点进程;(3)动态请求配置。
Description
技术领域
本发明涉及一种分布式网络爬虫优化方法。
背景技术
随着计算机技术的蓬勃发展,网络信息数据量呈指数增长,如何高效获取数据成为新的挑战。网络爬虫技术作为一种常见的数据抓取策略,一直被广泛应用于互联网领域中,通过自动化形式的动态抓取,大大节省了用户获取数据的时间。如各类搜索引擎、各类信息统计发布站点等,都以网络爬虫技术为核心进行功能的开发和拓展。
近年来,为了有效应对网络中更灵活的数据源和更庞大的数据量,国内外众多学者为爬虫技术做出了突出贡献。一方面是探索更为简洁实用的通用型爬虫框架,如Scrapy框架通过引擎、调度器、下载器、爬虫、管道以及中间件六大组件的交互使用,大大提高了爬虫的灵活性,同时简化了繁琐的冗余代码编写。另一方面是研究大数据爬取时的性能问题,如使用Redis内存型数据库提高爬虫运行效率以及使用分布式方案进行多节点同步抓取数据等。
发明内容
本发明基于Scrapy-Redis提出了一种分布式爬虫优化方法。在使用Scrapy框架并引入Redis的前提下,为了有效降低内存占用率,在原有指纹去重机制的基础上,提出了一种更高效的去重策略,为了有效减少资源损耗并对爬虫过程进行实时监测,提出了一种空闲监测机制,为了有效防止在进行大量数据爬取时被目的服务器屏蔽,提出了一种动态请求配置方案。技术方案如下:
一种基于Scrapy-Redis的分布式网络爬虫优化方法,包括以下方面:
(1)去重过程优化
使用布隆过滤器代替指纹去重机制,在优化后的去重过程中,元素集合使用位数组形式表示。当一个元素被加入集合时,通过K个散列函数将此元素映射成一个位数组中的K个点,并将所有点置为1;在进行判别检索时,若所有点的值均为1,则被检元素大概率出现在集合中;若所有点中存在0,则被检元素一定不在集合中。
(2)空闲监测机制
采用空闲监测机制,空闲监测机制使用Scrapy中的spider_idle信号来监测爬虫的空闲状态,当爬虫进入空闲状态时,该信号被发送;爬虫空闲时的三种情形:一是Request请求正在等待被下载;二是Request请求正在被调度;三是数据正在管道中被处理,为此三类情形设置一个空闲时间阈值作为分界条件,在接收到某节点的空闲信号之后,若监听到空闲时间小于等于空闲时间阈值,则节点继续工作;若监听到空闲时间大于空闲时间阈值,则可以判定为该节点暂无待爬取任务,即可结束此节点进程。
(3)动态请求配置
当客户端频繁向目的服务器发送请求时,可能被服务器辨认为恶意程序进而限定客户端行为,通过配置动态请求解决此问题:
一是进行动态IP的配置:维护一个可长期运行的IP池以供使用,并在每次发起请求时保证IP的随机性,为应对请求失败的情形,根据应用场景,配置接收到何种响应时尝试再次请求,并配置尝试请求次数达到何值时视为爬虫失败;同时,保证动态IP与Scrapy中下载中间件的关联性。
二是进行动态请求头的配置:按真实请求头规范编写一个请求头集合,用来模拟各类浏览器发起请求的过程,禁用Scrapy下载中间件中的请求头设置。
本发明的有益效果如下:
1.本发明对原去重方案进行了优化,在Redis中使用布隆过滤器对网络请求进行过滤,利用布隆过滤器的位数组运算特性,大大提高了空间利用率,虽然存在一定的误判率,但整体性能提升明显。
2.本发明设计并提出的空闲监测机制在分布式爬虫节点增多时,能主动判断节点状态,及时对无待爬取任务的节点进行关闭,有效降低资源占用率。
3.本发明配置的动态请求在短时间重复请求同一服务器时,可自动切换请求IP和请求头,提高数据爬取的成功率,保证爬虫长时间稳定运行。
附图说明
图1引入空闲监测机制的总体爬虫流程
图2优化去重过程以及配置动态请求后的单节点爬虫架构
具体实施方式
本发明通过优化去重过程、引入空闲监测机制以及配置动态请求三大策略提高了爬虫的整体性能,引入空闲监测机制后的总体爬虫流程如图1所示,优化去重过程以及配置动态请求后的单节点爬虫架构如图2所示,以下是具体实现过程。
1.去重过程优化
Scrapy-Redis提供了指纹去重机制。为了提高去重速度,整个去重过程在Redis中使用set数据结构进行,当数据量庞大时,会占用大量内存,造成设备不正常运转或效率低下。针对上述问题,本发明使用布隆过滤器代替指纹去重机制。
在优化后的去重过程中,元素集合使用位数组形式表示。当一个元素被加入集合时,通过K个散列函数将此元素映射成一个位数组中的K个点,并将所有点置为1。在进行判别检索时,若所有点的值均为1,则被检元素大概率出现在集合中;若所有点中存在0,则被检元素一定不在集合中。
2.空闲监测机制
在使用分布式架构进行爬虫时,有可能出现某爬虫节点无待爬取信息但仍不停止工作从而造成资源浪费的情况。为解决此问题,本发明提出了空闲监测机制。
空闲监测机制使用Scrapy中的spider_idle信号来监测爬虫的空闲状态,当爬虫进入空闲状态时,该信号被发送。爬虫空闲时一般有三种情形:一是Request请求正在等待被下载;二是Request请求正在被调度;三是数据正在管道中被处理。上述三类情形的空闲等待时间均较短,因此需要人为设置一个空闲时间阈值作为分界条件,在接收到某节点的空闲信号之后,若监听到空闲时间小于上述阈值,则节点继续工作;若监听到空闲时间大于上述阈值,则可以判定为该节点暂无待爬取任务,即可结束此节点进程。
3.动态请求配置
当客户端频繁向目的服务器发送请求时,可能被服务器辨认为恶意程序进而限定客户端行为,本发明通过配置动态请求解决此问题。
一是进行动态IP的配置。维护一个可长期运行的IP池以供使用,并在每次发起请求时保证IP的随机性。在进行具体请求细节设定时,为了应对请求失败的情形,配置接收到何种响应时尝试再次请求,并配置尝试请求次数达到何值时视为爬虫失败。同时,保证动态IP与Scrapy中下载中间件的关联性。
二是进行动态请求头的配置。按真实请求头规范编写一个请求头集合,用来模拟各类浏览器发起请求的过程,禁用Scrapy下载中间件中的请求头设置,并引入新配置的动态请求头集合。
本发明适用于大数据分布式爬取场景,尤其在设备内存空间不够充足的情况下,提出的去重过程能有效降低内存占用率,空闲监测机制能有效保障设备的正常运行。在应对对于爬虫行为较敏感的网站时,提出的动态请求配置方案能有效保障数据的正常获取。
Claims (1)
1.一种基于Scrapy-Redis的分布式网络爬虫优化方法,包括以下方面:
(1)去重过程优化
使用布隆过滤器代替指纹去重机制,在优化后的去重过程中,元素集合使用位数组形式表示;当一个元素被加入集合时,通过K个散列函数将此元素映射成一个位数组中的K个点,并将所有点置为1;在进行判别检索时,若所有点的值均为1,则被检元素大概率出现在集合中;若所有点中存在0,则被检元素一定不在集合中。
(2)空闲监测机制
采用空闲监测机制,空闲监测机制使用Scrapy中的spider_idle信号来监测爬虫的空闲状态,当爬虫进入空闲状态时,该信号被发送;爬虫空闲时的三种情形:一是Request请求正在等待被下载;二是Request请求正在被调度;三是数据正在管道中被处理,为此三类情形设置一个空闲时间阈值作为分界条件,在接收到某节点的空闲信号之后,若监听到空闲时间小于等于空闲时间阈值,则节点继续工作;若监听到空闲时间大于空闲时间阈值,则可以判定为该节点暂无待爬取任务,即可结束此节点进程;
(3)动态请求配置
当客户端频繁向目的服务器发送请求时,可能被服务器辨认为恶意程序进而限定客户端行为,通过配置动态请求解决此问题:
一是进行动态IP的配置:维护一个可长期运行的IP池以供使用,并在每次发起请求时保证IP的随机性,为应对请求失败的情形,根据应用场景,配置接收到何种响应时尝试再次请求,并配置尝试请求次数达到何值时视为爬虫失败;同时,保证动态IP与Scrapy中下载中间件的关联性;
二是进行动态请求头的配置:按真实请求头规范编写一个请求头集合,用来模拟各类浏览器发起请求的过程,禁用Scrapy下载中间件中的请求头设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317200.5A CN111611463A (zh) | 2020-04-21 | 2020-04-21 | 一种基于Scrapy-Redis的分布式网络爬虫优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317200.5A CN111611463A (zh) | 2020-04-21 | 2020-04-21 | 一种基于Scrapy-Redis的分布式网络爬虫优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111611463A true CN111611463A (zh) | 2020-09-01 |
Family
ID=72200137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010317200.5A Pending CN111611463A (zh) | 2020-04-21 | 2020-04-21 | 一种基于Scrapy-Redis的分布式网络爬虫优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611463A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114337992A (zh) * | 2022-03-09 | 2022-04-12 | 深圳市华星联科技有限公司 | 基于多节点远距离数据低损传输方法 |
CN117453423A (zh) * | 2023-12-25 | 2024-01-26 | 北京趋动智能科技有限公司 | Gpu显存管理方法和系统,存储介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050029152A (ko) * | 2005-02-04 | 2005-03-24 | (주)엔알시스템스 | 개인 웹사이트를 이용한 개인간 전자상거래 중개방법 및시스템 |
CN103475637A (zh) * | 2013-04-24 | 2013-12-25 | 携程计算机技术(上海)有限公司 | 基于ip访问行为的网络访问控制方法及系统 |
CN107395782A (zh) * | 2017-07-19 | 2017-11-24 | 北京理工大学 | 一种基于代理池的ip限制受控源信息抓取方法 |
CN109885749A (zh) * | 2019-02-28 | 2019-06-14 | 安徽腾策网络科技有限公司 | 一种网页信息数据防抓取系统 |
-
2020
- 2020-04-21 CN CN202010317200.5A patent/CN111611463A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050029152A (ko) * | 2005-02-04 | 2005-03-24 | (주)엔알시스템스 | 개인 웹사이트를 이용한 개인간 전자상거래 중개방법 및시스템 |
CN103475637A (zh) * | 2013-04-24 | 2013-12-25 | 携程计算机技术(上海)有限公司 | 基于ip访问行为的网络访问控制方法及系统 |
CN107395782A (zh) * | 2017-07-19 | 2017-11-24 | 北京理工大学 | 一种基于代理池的ip限制受控源信息抓取方法 |
CN109885749A (zh) * | 2019-02-28 | 2019-06-14 | 安徽腾策网络科技有限公司 | 一种网页信息数据防抓取系统 |
Non-Patent Citations (3)
Title |
---|
周小董: "解决Scrapy-Redis空跑问题,链接跑完后自动关闭爬虫", 《知乎》 * |
孙瑜: "基于Scrapy框架的网络爬虫系统的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
行家网校: "Python爬取免费代理搭建代理池", 《知乎》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114337992A (zh) * | 2022-03-09 | 2022-04-12 | 深圳市华星联科技有限公司 | 基于多节点远距离数据低损传输方法 |
CN117453423A (zh) * | 2023-12-25 | 2024-01-26 | 北京趋动智能科技有限公司 | Gpu显存管理方法和系统,存储介质和电子设备 |
CN117453423B (zh) * | 2023-12-25 | 2024-04-19 | 北京趋动智能科技有限公司 | Gpu显存管理方法和系统,存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11882054B2 (en) | Terminating data server nodes | |
CN106789377B (zh) | 网元集群的服务参数更新方法 | |
CN103902386B (zh) | 一种基于连接代理优化管理的多线程网络爬虫处理方法 | |
CN106534244B (zh) | 一种代理资源的调度方法及装置 | |
CN101547113B (zh) | 告警信息过滤系统、装置及方法 | |
WO2021258753A1 (zh) | 一种业务处理方法、装置及电子设备和存储介质 | |
CN105357296A (zh) | 一种Docker云平台下弹性缓存系统 | |
WO2019223599A1 (zh) | 数据采集系统、方法、节点设备及存储介质 | |
CN111611463A (zh) | 一种基于Scrapy-Redis的分布式网络爬虫优化方法 | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
CN105138679A (zh) | 一种基于分布式缓存的数据处理系统及处理方法 | |
CN110874429A (zh) | 面向海量数据采集的分布式网络爬虫性能优化方法 | |
CN108519987A (zh) | 一种数据持久化方法和装置 | |
CN113656673A (zh) | 面向广告投放的主从分布内容爬取机器人 | |
CN111949389B (zh) | 基于Slurm的信息采集方法和装置、服务器、计算机可读存储介质 | |
You et al. | SNES: Social-Network-Oriented Public Opinion Monitoring Platform Based on ElasticSearch. | |
CN111585963A (zh) | 一种数据获取方法、系统及存储介质 | |
Anbukodi et al. | Reducing web crawler overhead using mobile crawler | |
CN112866339B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN107317831A (zh) | 基于内存数据库的网站访问方法 | |
CN111078975B (zh) | 一种多节点增量式数据采集系统及采集方法 | |
CN110990213B (zh) | 一种集群环境用户日志实时监控方法及装置 | |
CN108810070B (zh) | 一种资源共享方法、装置、智能设备和存储介质 | |
CN106339385B (zh) | 抓取网页的系统、网页抓取节点分配方法、抓取网页的方法 | |
Zhang et al. | Optimization of distributed crawler under Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200901 |
|
RJ01 | Rejection of invention patent application after publication |