Scrapy进阶-防ban策略
发布日期:2021-08-22 06:43:19 浏览次数:1 分类:技术文章

本文共 1234 字,大约阅读时间需要 4 分钟。

在中我们学会了如何下载图片。但是在大批量爬取的时候我们最怕的就是被网站ban了。官网提供了几种方法:

1. download_delay

因为我们要大批量爬取网页,为了防止过分密集影响到别人的服务器,建议在setting.py中设置DOWNLOAD_DELAY=2,最好是在晚上睡觉的时候跑,这样虽然速度慢了一点,但是被dan的几率会降低很多哦。

2. 禁止cookies

cookies,是指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密),有的时候我们需要登录网站进行爬取数据,所以cookies很重要,但是当我们不需要让网站记住我们的是谁的时候,那么禁止cookies也就防止了可能使用cookies识别爬虫轨迹的网站得逞。

在settings.py中设置COOKIES_ENABLES=False。也就是不启用cookies middleware,不想web server发送cookies。

3. 变换user agent

user agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。之前爬取豆瓣的时候我们就把原来自表爬虫身份的user agent改了。

img_4e9b4aec5ed4edf7c643d05834dbf861.png
user agent

如果只用一个user agent 爬取太多次也会让服务器产生怀疑的,所以我们需要大量的user agent用来建立user agent pool。并通过DOWNLOADER_MIDDLEWARES切换agent。

img_1cf9db1c11981628437c9291a08a2f57.png
DOWNLOADER_MIDDLEWARES

建立一个middlewares.py, 内容如下:

# -*- coding: utf-8 -*-import randomfrom scrapy.conf import settingsclass RandomUserAgent(object):    """Randomly rotate user agents based on a list of predefined ones"""    def __init__(self, agents):        self.agents = agents    @classmethod    def from_crawler(cls, crawler):        return cls(crawler.settings.getlist('USER_AGENTS'))    def process_request(self, request, spider):        ua = random.choice(self.agents)        request.headers.setdefault('User-Agent', ua)

下面两个方法目前不会,先占位

4. 使用proxy

5. 分布式爬取

转载地址:https://blog.csdn.net/weixin_33738555/article/details/89616035 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Java】几道常见的秋招面试题
下一篇:OpenTTD 1.9.0-beta3 发布,开源模拟经营游戏

发表评论

最新留言

不错!
[***.144.177.141]2024年02月29日 18时09分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章