爬虫工作量由小到大的思维转变---<第六章 Scrapy想做事先做人>

本文主要是介绍爬虫工作量由小到大的思维转变---<第六章 Scrapy想做事先做人>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

有新留言,说:"scrapy的业务逻辑什么的都没有问题,可是一旦开启,就被封!"
我的建议:1.没有动用ip池之前,调好配置,完善代码;
                2.有了ip池之后,调高配置,开始爬取;

-------------也就是,在开始项目前,你要表现得像个"人"!!! 

正文:

首先,你就记两个参数(在settings里):
# 配置下载延迟
DOWNLOAD_DELAY = 1# 配置并发请求的最大数
CONCURRENT_REQUESTS = 16
在Scrapy中,DOWNLOAD_DELAY和CONCURRENT_REQUESTS两个设置是用于控制爬虫行为的重要参数。


DOWNLOAD_DELAY:

这个设置用于指定连续请求之间的下载延迟时间,值以秒为单位。
例如,DOWNLOAD_DELAY = 1意味着Scrapy在执行两个请求之间至少等待1秒。
这有助于减缓爬取速度,避免因为向网站发送过多请求而过快地爬取,从而避免给网站服务器带来负担,或者因为爬取过快而被网站反爬机制封锁。
CONCURRENT_REQUESTS:

这个设置用于控制Scrapy爬虫的最大并发请求数。
默认情况下,Scrapy为16,也就是说,Scrapy可以同时有最多16个请求在进行。
调整这个数字可以控制爬虫的并发水平。增加并发数可能会加速爬取速度,但也增加了服务器的负载和被封锁的风险;减少并发数会减轻对服务器的压力,但爬取速度会慢一些。

合理地使用这两个设置可以帮助你更好地管理爬虫的爬取行为和效率,同时避免不必要的问题(如遭到网站封锁)。

或者,你在你的爬虫文件里面:

class JihaishujuSpider(scrapy.Spider):name = 'jjjj'allowed_domains = ['XXX.com']#这里也可以控制并发量custom_settings = {'DOWNLOAD_DELAY': 3,# 如果您还想进一步限制并发数量,可以设置以下的属性'CONCURRENT_REQUESTS_PER_DOMAIN': 1,'CONCURRENT_REQUESTS_PER_IP': 1,}

custom_settings属性在Scrapy中用于给特定的爬虫指定设置,覆盖项目全局的settings.py文件中的相同设置。这里列出的设置如下:

  • DOWNLOAD_DELAY: 这是在两次连续请求之间的等待时间,用于限制爬虫的爬取速度,以秒为单位。 
    •         -DOWNLOAD_DELAY = 3意味着爬虫在执行一个下载请求后,会等待3秒后再执行下一个请求。
  • CONCURRENT_REQUESTS_PER_DOMAIN: 用于控制Scrapy对于任何单一域名的最大并发请求数。
    •         CONCURRENT_REQUESTS_PER_DOMAIN = 1意味着同一时间,Scrapy对于同一个域名只会执行一个请求。
  • CONCURRENT_REQUESTS_PER_IP: 用于限制Scrapy对同一个IP,无论域名如何,的最大并发请求数。
    •         CONCURRENT_REQUESTS_PER_IP = 1意味着Scrapy会对每个IP地址同时只进行一个请求。

小总结:

  1. DOWNLOAD_DELAY设置可以避免请求过于频繁,使得爬虫行为看起来更像是人类用户。这在对方网站明确禁止过快自动化爬取或有频繁请求限制时非常有用。
  2. 此外,当你设置CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP为1时,Scrapy相当于以串行方式访问每个域和IP,这极大地减少了对服务器造成的负载以及由于发送大量并发请求而引起的潜在问题。

这篇关于爬虫工作量由小到大的思维转变---<第六章 Scrapy想做事先做人>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/494154

相关文章

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、

Golang网络爬虫框架gocolly/colly(三)

熟悉了《Golang 网络爬虫框架gocolly/colly 一》和《Golang 网络爬虫框架gocolly/colly 二》之后就可以在网络上爬取大部分数据了。本文接下来将爬取中证指数有限公司提供的行业市盈率。(http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio) 定义数据结构体: type Zhj

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

第六章习题11.输出以下图形

🌏个人博客:尹蓝锐的博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~ 1、题目要求: 输出以下图形

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

Python 爬虫入门 - 基础数据采集

Python网络爬虫是一种强大且灵活的工具,用于从互联网上自动化地获取和处理数据。无论你是数据科学家、市场分析师,还是一个想要深入了解互联网数据的开发者,掌握网络爬虫技术都将为你打开一扇通向丰富数据资源的大门。 在本教程中,我们将从基本概念入手,逐步深入了解如何构建和优化网络爬虫,涵盖从发送请求、解析网页结构到保存数据的全过程,并讨论如何应对常见的反爬虫机制。通过本教程,你将能够构建有效的网络爬