28-cookie禁用自动限速自定义spider的settings对抗反爬机制

17次阅读

共计 1511 个字符,预计需要花费 4 分钟才能阅读完成。

【百度云搜索,搜各种资料:http://www.lqkweb.com】

【搜网盘,搜各种资料:http://www.swpan.cn】

【百度云搜索,搜各种资料:http://www.bdyss.cn】

cookie 禁用

就是在 Scrapy 的配置文件 settings.py 里禁用掉 cookie 禁用,可以防止被通过 cookie 禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie 禁用后是无法登录的

settings.py 里禁用掉 cookie 禁用

COOKIES_ENABLED = False 禁用 cookie

# Disable cookies (enabled by default)
COOKIES_ENABLED = False

自动限速

Scrapy 默认没有限速的,只要遇到 URL 就访问,没有间隙

自动限速 (AutoThrottle) 扩展

settings.py 里设置

DOWNLOAD_DELAY = 下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度,减轻服务器压力。同时也支持小数(单位秒)

# Configure a delay for requests for the same website (default: 0)
# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 10

AUTOTHROTTLE_ENABLED = True 开启限速,启用 AutoThrottle 扩展

# Enable and configure the AutoThrottle extension (disabled by default)
# See http://doc.scrapy.org/en/latest/topics/autothrottle.html
AUTOTHROTTLE_ENABLED = True

自定义 spider 的 settings,也就是为每一个爬虫单独设置配置文件里的值,将覆盖掉 settings.py 里的相同设置

custom_settings = {键值对} 为每一个爬虫单独设置配置文件里的值,将覆盖掉 settings.py 里的相同设置,在爬虫文件里设置

举例:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request,FormRequest

class PachSpider(scrapy.Spider):                            #定义爬虫类,必须继承 scrapy.Spider
    name = 'pach'                                           #设置爬虫名称
    allowed_domains = ['www.kuaidaili.com']                 #爬取域名

    custom_settings = {"COOKIES_ENABLED": True                             #覆盖掉 settings.py 里的相同设置,开启 COOKIES}

    def start_requests(self):    #起始 url 函数,会替换 start_urls
        """第一次请求一下登录页面,设置开启 cookie 使其得到 cookie,设置回调函数"""
        return [Request(
            url='http://www.kuaidaili.com/free/inha/2/',
            meta={'cookiejar':1},       #开启 Cookies 记录,将 Cookies 传给回调函数
            callback=self.parse
        )]


    def parse(self, response):
        title = response.xpath('//*[@id="list"]/table/tbody/tr')

正文完
 0