1. 程式人生 > >Python爬蟲:scrapy爬蟲設定隨機訪問時間間隔

Python爬蟲:scrapy爬蟲設定隨機訪問時間間隔

scrapy中有一個引數:DOWNLOAD_DELAY 或者 download_delay 可以設定下載延時,不過Spider類被初始化的時候就固定了,爬蟲執行過程中沒發改變。

隨機延時,可以降低被封ip的風險

程式碼示例

random_delay_middleware.py

# -*- coding:utf-8 -*-

import logging
import random
import time


class RandomDelayMiddleware(object):
    def __init__(self, delay):
        self.delay = delay

    @classmethod
def from_crawler(cls, crawler): delay = crawler.spider.settings.get("RANDOM_DELAY", 10) if not isinstance(delay, int): raise ValueError("RANDOM_DELAY need a int") return cls(delay) def process_request(self, request, spider): delay = random.randint(0
, self.delay) logging.debug("### random delay: %s s ###" % delay) time.sleep(delay)

使用方式:

custom_settings = {
        "RANDOM_DELAY": 3,
        "DOWNLOADER_MIDDLEWARES": {
            "middlewares.random_delay_middleware.RandomDelayMiddleware": 999,
        }
    }

說明:
RANDOM_DELAY

: 下載隨機延時範圍,[0, RANDOM_DELAY]
比如上面我設定了3秒,那麼隨機延時範圍將是[0, 3]
如果設定了DOWNLOAD_DELAY 那麼,總的延時應該是兩者之和:

total_delay = DOWNLOAD_DELAY + RANDOM_DELAY

更精確的說,應該是:

DOWNLOAD_DELAY + 0 < total_delay < DOWNLOAD_DELAY + RANDOM_DELAY

相關推薦

Python爬蟲scrapy爬蟲設定隨機訪問時間間隔

scrapy中有一個引數:DOWNLOAD_DELAY 或者 download_delay 可以設定下載延時,不過Spider類被初始化的時候就固定了,爬蟲執行過程中沒發改變。 隨機延時,可以降低被封

Python爬蟲scrapy框架Spider類引數設定

Spider設定 引數 說明 示例 name 爬蟲名稱,必須唯一 name = “myspider” handle_httpstatus_list 需要

Python爬蟲Scrapy除錯執行單個爬蟲

一般執行Scrapy專案的爬蟲是在命令列輸入指令執行的: $ scrapy crawl spider 每次都輸入還是比較麻煩的,偶爾還會敲錯,畢竟能少動就少動 Scrapy提供了一個命令列工具,可以在單個spider檔案中加入以下程式碼: from scrapy im

Python爬蟲Scrapy的get請求和post請求

scrapy 請求繼承體系 Request |-- FormRequest 通過以下請求測試 GET: https://httpbin.org/get POST: https://httpbin.org/post get請求 方式:通過Request 傳送 im

Python爬蟲Scrapy的Crawler物件及擴充套件Extensions和訊號Signals

先了解Scrapy中的Crawler物件體系 Crawler物件 settings crawler的配置管理器 set(name, value, priority=‘project’) setdict(values, priority=‘p

Python爬蟲Scrapy中介軟體middleware和Pipeline

Scrapy提供了可自定義2種中介軟體,1個數據處理器 名稱 作用 使用者設定 資料收集器(Item-Pipeline) 處理item 覆蓋 下載中介軟體(Downloader-M

python爬蟲scrapy框架xpath和css選擇器語法

Xpath基本語法 一、常用的路徑表示式: 表示式 描述 例項 nodename 選取nodename節點的所有子節點 //div / 從根節點選取

Python爬蟲Scrapy框架基礎框架結構及騰訊爬取

Scrapy終端是一個互動終端,我們可以在未啟動spider的情況下嘗試及除錯程式碼,也可以用來測試XPath或CSS表示式,檢視他們的工作方式,方便我們爬取的網頁中提取的資料。 如果安裝了 IPython ,Scrapy終端將使用 IPython (替代標準Python終端)。 IPytho

Python爬蟲--timeout設定--防止訪問時間過長造成假死

爬蟲有時候會因為爬去某些網頁速度極慢,影響效能。所有可以設定超時時間。 timeout單位秒 設定超時時間為0,使用try語句。 #coding:utf-8 **urllib2** 超時可以通過

Python爬蟲爬蟲前得了解的事兒

編寫 election 檢查 語言 jpg mage 圖片 一個 網頁 這是關於Python的第14篇文章,主要介紹下爬蟲的原理。 提到爬蟲,我們就不得不說起網頁,因為我們編寫的爬蟲實際上是針對網頁進行設計的。解析網頁和抓取這些數據是爬蟲所做的事情。 對於大部分網頁來講,它

python爬蟲—使用scrapy爬蟲框架

pywin32 rip for 鏈接 是把 ror sdn 成功 repl 問題1.使用scrapy框架,使用命令提示符pip命令下載scrapy後,卻無法使用scrapy命令,出現scrapy不是內部或外部命令。也不是可運行的程序 解決:一開始,我是把python安裝在

2017.07.26 Python網絡爬蟲Scrapy爬蟲框架

返回 scripts http ref select 文本 lang bsp str 1.windows下安裝scrapy:cmd命令行下:cd到python的scripts目錄,然後運行pip install 命令 然後pycharmIDE下就有了Scrapy:

2017.08.04 Python網絡爬蟲Scrapy爬蟲實戰二 天氣預報

font size 項目 執行 weather html time art show 1.項目準備:網站地址:http://quanzhou.tianqi.com/ 2.創建編輯Scrapy爬蟲: scrapy startproject weather scrapy

2017.08.04 Python網絡爬蟲Scrapy爬蟲實戰二 天氣預報的數據存儲問題

sql語句 city amd64 ces img href asp encoding primary 1.數據存儲到JSon:程序閱讀一般都是使用更方便的Json或者cvs等待格式,繼續講解Scrapy爬蟲的保存方式,也就是繼續對pipelines.py文件動手腳 (1)創

Python3網路爬蟲Scrapy入門實戰之爬取動態網頁圖片

Python版本: python3.+ 執行環境: Mac OS IDE: pycharm 一 前言 二 Scrapy相關方法介紹 1 搭建Scrapy專案 2 shell分析 三 網頁分析

Python3網路爬蟲Scrapy入門之使用ImagesPipline下載圖片

Python版本: python3.+ 執行環境: Mac OS IDE: pycharm 一前言 二初識ImagesPipline ImagesPipline的特性 ImagesPipline的工

Python實戰網路爬蟲都能幹什麼?

@冰藍 之前在北京買房,誰想房價開始瘋長,鏈家的房價等資料分析只給了一小部分,遠遠不能滿足自己的需求。於是晚上花了幾個小時的時間寫了個爬蟲,爬下了北京所有的小區資訊及北京所有小區的所有歷史成交記錄。 @陳樂群 上次發現Android QQ和iOS QQ可以顯示網路狀態(2G

Python網路爬蟲scrapy爬蟲的基本使用

Scrapy爬蟲的資料型別: 1. Request類:向網路上提交請求,跟requests庫裡的不是一個型別! 2. Responce類:封裝爬取內容 3. ITEM:spider封裝類

Python MySQL安裝+Scrapy爬蟲將Item寫入mysql資料庫

1. 資料庫安裝 Win7+python+amd64安裝MySQL參考如下網址 http://blog.csdn.net/wklken/article/details/7253245 2. python資料庫操作手冊 http://www.runoob.com/p

第十七節Scrapy爬蟲框架之Middleware文件詳解

cookies yield 啟動 urn 響應 HERE 返回 === one # -*- coding: utf-8 -*-# 在這裏定義蜘蛛中間件的模型# Define here the models for your spider middleware## See d