《Python网络爬虫从入门到实践 第2版》第9章 反爬虫问题

本文详细介绍了网络爬虫在实际应用中遭遇的反爬虫问题,包括网站为何设置反爬虫机制,如流量浪费和保护数据资源。接着,列举了三种反爬虫方式:不返回网页、返回非目标网页和增加数据获取难度。同时,提出了五种反反爬虫策略,包括修改请求头、调整爬虫间隔时间、使用代理、更换IP地址以及登录获取数据。最后,强调了爬虫道德和合法使用的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第9章 反爬虫问题

爬虫、反爬虫和反反爬虫是网络爬虫过程中一直伴随的问题。

现实世界的网络爬虫程序并不像之前介绍的爬取博客那么简单,运行不如意者十有八九。首先需要理解一下“反爬虫”这个概念,其实就是“反对爬虫”。根据网络上的定义,网络爬虫为使用任何技术手段批量获取网站信息的一种方式。“反爬虫”就是使用任何技术手段阻止批量获取网站信息的一种方式。

本章主要介绍反爬虫问题,包括网站对爬虫实施限制封锁的原因和爬虫程序如何解决这个问题。

目录

第9章 反爬虫问题

9.1 为什么会被反爬虫

9.2 反爬虫的方式有哪些

9.2.1 不返回网页

9.2.2 返回非目标网页

9.2.3 获取数据变难

9.3 如何“反反爬虫”

9.3.1 修改请求头

9.3.2 修改爬虫的间隔时间

9.3.3 使用代理

9.3.4 更换IP地址

9.3.5 登录获取数据

9.4 总结


​​​​​​​

9.1 为什么会被反爬虫

对于一个经常使用爬虫程序获取网页数据的人来说,遇到网站的“反爬虫”已经是司空见惯。

那么,网站为什么要“反爬虫”呢?

第一,网络爬虫浪费网站的流量,也就是浪费钱。爬虫对于一个网站来说并不算是真正用户的流量,而且往往能够不知疲倦地爬取网站。更有甚者,使用分布式的多台机器爬虫,造成网站浏览量增高,浪费网站流量。

第二,数据是每家公司非常宝

基于Python Scrapy实现的蜂鸟数据采集爬虫系统 含代理、日志处理和全部源代码等 import scrapy from fengniao.items import FengniaoItem from scrapy.spidermiddlewares.httperror import HttpError from twisted.internet.error import TimeoutError, TCPTimedOutError, DNSLookupError, ConnectionRefusedError class FengniaoclawerSpider(scrapy.Spider): name = 'fengniaoClawer' allowed_domains = ['fengniao.com'] # 爬虫自定义设置,会覆盖 settings.py 文件中的设置 custom_settings = { 'LOG_LEVEL': 'DEBUG', # 定义log等级 'DOWNLOAD_DELAY': 0, # 下载延时 'COOKIES_ENABLED': False, # enabled by default 'DEFAULT_REQUEST_HEADERS': { # 'Host': 'www.fengniao.com', 'Referer': 'https://www.fengniao.com', }, # 管道文件,优先级按照由小到大依次进入 'ITEM_PIPELINES': { 'fengniao.pipelines.ImagePipeline': 100, 'fengniao.pipelines.FengniaoPipeline': 300, }, # 关于下载图片部分 'IMAGES_STORE': 'fengniaoPhoto', # 没有则新建 'IMAGES_EXPIRES': 90, # 图片有效期,已经存在的图片在这个时间段内不会再下载 'IMAGES_MIN_HEIGHT': 100, # 图片最小尺寸(高度),低于这个高度的图片不会下载 'IMAGES_MIN_WIDTH': 100, # 图片最小尺寸(宽度),低于这个宽度的图片不会下载 # 下载中间件,优先级按照由小到大依次进入 'DOWNLOADER_MIDDLEWARES': { 'fengniao.middlewares.ProxiesMiddleware': 400, 'fengniao.middlewares.HeadersMiddleware': 543, 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, }, 'DEPTH_PRIORITY': 1, # BFS,是以starts_url为准,局部BFS,受CONCURRENT_REQUESTS影响 'SCHEDULER_DISK_QUEUE': 'scrapy.squeues.PickleFifoDiskQueue', 'SCHEDULER_MEMORY_QUEUE': 'scrapy.squeues.FifoMemoryQueue', 'REDIRECT_PRIORITY_ADJUST': 2, # Default: +2 'RETRY_PRIORITY_ADJUST': -1, # Default: -1 'RETRY_TIMES': 8, # 重试次数 # Default: 2, can also be specified per-request using max_retry_times attribute of Request.meta 'DOWNLOAD_TIMEOUT': 30, # This timeout can be set per spider using download_timeout spider attribute and per-request using download_timeout Request.meta key # 'DUPEFILTER_CLASS': "scrapy_redis.dupefilter.RFPDupeFilter", # 'SCHEDULER': "scrapy_redis.scheduler.Scheduler", # 'SCHEDULER_PERSIST': False, # Don't cleanup red
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值