scrapy setting

来源:https://www.cnblogs.com/xycfree/archive/2018/01/16/8299342.html
-Advertisement-
Play Games

http://blog.csdn.net/u011781521/article/details/70188171 http://wiki.jikexueyuan.com/project/scrapy/autothrottle.html coding: utf 8 Scrapy settings fo ...


http://blog.csdn.net/u011781521/article/details/70188171
http://wiki.jikexueyuan.com/project/scrapy/autothrottle.html

-- coding: utf-8 --

Scrapy settings for demo1 project

For simplicity, this file contains only settings considered important or

commonly used. You can find more settings consulting the documentation:

http://doc.scrapy.org/en/latest/topics/settings.html

http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html

http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html

BOT_NAME = 'demo1' #Scrapy項目的名字,這將用來構造預設 User-Agent,同時也用來log,當您使用 startproject 命令創建項目時其也被自動賦值。

SPIDER_MODULES = ['demo1.spiders'] #Scrapy搜索spider的模塊列表 預設: [xxx.spiders]
NEWSPIDER_MODULE = 'demo1.spiders' #使用 genspider 命令創建新spider的模塊。預設: 'xxx.spiders'

爬取的預設User-Agent,除非被覆蓋

USER_AGENT = 'demo1 (+http://www.yourdomain.com)'

如果啟用,Scrapy將會採用 robots.txt策略

ROBOTSTXT_OBEY = True

Scrapy downloader 併發請求(concurrent requests)的最大值,預設: 16

CONCURRENT_REQUESTS = 32

為同一網站的請求配置延遲(預設值:0)

See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay

See also autothrottle settings and docs

DOWNLOAD_DELAY = 3 下載器在下載同一個網站下一個頁面前需要等待的時間,該選項可以用來限制爬取速度,減輕伺服器壓力。同時也支持小數:0.25 以秒為單位

下載延遲設置只有一個有效

CONCURRENT_REQUESTS_PER_DOMAIN = 16 對單個網站進行併發請求的最大值。

CONCURRENT_REQUESTS_PER_IP = 16 對單個IP進行併發請求的最大值。如果非0,則忽略 CONCURRENT_REQUESTS_PER_DOMAIN 設定,使用該設定。 也就是說,併發限制將針對IP,而不是網站。該設定也影響 DOWNLOAD_DELAY: 如果 CONCURRENT_REQUESTS_PER_IP 非0,下載延遲應用在IP而不是網站上。

禁用Cookie(預設情況下啟用)

COOKIES_ENABLED = False

禁用Telnet控制台(預設啟用)

TELNETCONSOLE_ENABLED = False

覆蓋預設請求標頭:

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',

'Accept-Language': 'en',

}

啟用或禁用蜘蛛中間件

See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html

SPIDER_MIDDLEWARES = {

'demo1.middlewares.Demo1SpiderMiddleware': 543,

}

啟用或禁用下載器中間件

See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html

DOWNLOADER_MIDDLEWARES = {

'demo1.middlewares.MyCustomDownloaderMiddleware': 543,

}

啟用或禁用擴展程式

See http://scrapy.readthedocs.org/en/latest/topics/extensions.html

EXTENSIONS = {

'scrapy.extensions.telnet.TelnetConsole': None,

}

配置項目管道

See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html

ITEM_PIPELINES = {

'demo1.pipelines.Demo1Pipeline': 300,

}

啟用和配置AutoThrottle擴展(預設情況下禁用)

See http://doc.scrapy.org/en/latest/topics/autothrottle.html

AUTOTHROTTLE_ENABLED = True

初始下載延遲

AUTOTHROTTLE_START_DELAY = 5

在高延遲的情況下設置的最大下載延遲

AUTOTHROTTLE_MAX_DELAY = 60

Scrapy請求的平均數量應該並行發送每個遠程伺服器

AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

啟用顯示所收到的每個響應的調節統計信息:

AUTOTHROTTLE_DEBUG = False

啟用和配置HTTP緩存(預設情況下禁用)

See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings

HTTPCACHE_ENABLED = True

HTTPCACHE_EXPIRATION_SECS = 0

HTTPCACHE_DIR = 'httpcache'

HTTPCACHE_IGNORE_HTTP_CODES = []

HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

解釋幾個參數:
ROBOTSTXT_OBEY = True-----------是否遵守robots.txt
CONCURRENT_REQUESTS = 16-----------開啟線程數量,預設16
AUTOTHROTTLE_START_DELAY = 3-----------開始下載時限速並延遲時間
AUTOTHROTTLE_MAX_DELAY = 60-----------高併發請求時最大延遲時間
最底下的幾個:是否啟用在本地緩存,如果開啟會優先讀取本地緩存,從而加快爬取速度,視情況而定
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
以上幾個可以視項目需要開啟,但是有兩個參數最好每次都開啟,而每次都是項目文件手動開啟不免有些麻煩,最好是項目創建後就自動開啟

DEFAULT_REQUEST_HEADERS = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',

'Accept-Language': 'en',

}

這個是瀏覽器請求頭,很多網站都會檢查客戶端的headers,比如豆瓣就是每一個請求都檢查headers的user_agent,否則只會返回403,可以開啟

USER_AGENT = 'Chirco (+http://www.yourdomain.com)'

這個是至關重要的,大部分伺服器在請求快了會首先檢查User_Agent,而scrapy預設的瀏覽器頭是scrapy1.1 我們需要開啟並且修改成瀏覽器頭,如:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1

但是最好是這個USER-AGENT會隨機自動更換最好了。
下麵的代碼可以從預先定義的user-agent的列表中隨機選擇一個來採集不同的頁面

在settings.py中添加以下代碼

DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,
'randoms.rotate_useragent.RotateUserAgentMiddleware' :400
}

rotate_useragent的代碼為:

-- coding: utf-8 --

import random
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware

class RotateUserAgentMiddleware(UserAgentMiddleware):
def init(self, user_agent=''):
self.user_agent = user_agent

def process_request(self, request, spider):  
    #這句話用於隨機選擇user-agent  
    ua = random.choice(self.user_agent_list)  
    if ua:  
        print('User-Agent:'+ua)  
        request.headers.setdefault('User-Agent', ua)  

#the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape  
user_agent_list = [\  
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\  
    "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\  
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\  
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\  
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\  
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\  
    "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\  
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\  
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\  
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\  
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\  
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"  
   ]

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 堆和棧都是Java用來在RAM中存放數據的地方。 堆 (1)Java的堆是一個運行時數據區,類的對象從堆中分配空間。這些對象通過new等指令建立,通過垃圾回收器來銷毀。 (2)堆的優勢是可以動態地分配記憶體空間,需要多少記憶體空間不必事先告訴編譯器,因為它是在運行時動態分配的。但缺點是,由於需要在運行時 ...
  • 在上一篇文章中(Java的參數傳遞是值傳遞還是引用傳遞),主要分析了java語言的參數傳遞只有按值傳遞而沒有按引用傳遞。 先看一下微軟的C#文檔對按引用傳遞的定義(如下截圖):https://docs.microsoft.com/zh-cn/dotnet/csharp/language-refere ...
  • 瞭解就行了** 通過新建file建立含有標簽,標簽屬性##xml的格式如下,就是通過<>節點來區別數據結構的: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year ...
  • 當一個對象被當作參數傳遞到一個方法後,在此方法內可以改變這個對象的屬性,那麼這裡到底是值傳遞還是引用傳遞? 答:是值傳遞。Java 語言的參數傳遞只有值傳遞。當一個實例對象作為參數被傳遞到方法中時,參數的值就是該對象的引用的一個副本。指向同一個對象,對象的內容可以在被調用的方法內改變,但對象的引用( ...
  • 1.開發環境 (推薦):jdk1.8+Maven(3.2+)+Intellij IDEA+windows10; 說明: jdk:springboot官方說的很明確,到目前版本的springboot(1.5.9),官方指定要求jdk1.8以上; 依賴包管理:可以通過拷貝jar文件的方式管理依賴,但官方 ...
  • [原創] 前幾天沒事幹看別人一直在玩微信上線的那一個跳一跳小游戲,玩著玩著老是掉下去,閑著沒事唄 就想了想做一個輔助程式的唄.不過先做的手動版的.自動版的有點麻煩.就不發了.用的Java寫的,也就一個蒙版. 下麵就開始介紹我的小程式,沒好多東西,真正的代碼應該就是100行左右,沒啥難的. 下麵這是我 ...
  • 首先,放上項目github地址:https://github.com/codethereforam/express mysql demo 一、前言 之前學的java,一直用的ssm框架寫後臺。前段時間接觸到node.js,於是花了兩天時間學了一下node.js並寫了一個CRUD簡單示例。由於前幾天一 ...
  • 終於有一點點小變化了,今天學習了java里的對話框,有四種類型:1、確認對話框(showConfirmDialog) 2、可選擇輸入的對話框(showInputDialog) 3、信息對話框(showMessageDialog) 4、可以對其他三種對話框組合的。(showOptionDialog) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...