Scrapy中的反反爬、logging設置、Request參數及POST請求


常用的反反爬策略

 通常防止爬蟲被反主要有以下幾策略:

  • 動態設置User-Agent(隨機切換User-Agent,模擬不同用戶的瀏覽器信息。)
  • 禁用cookies(也就是不啟用cookies middleware,不向server發送cookies,有些網站通過cookies的使用發現爬蟲,可以通過COOKIES_ENABLED控制cookies middleware的開啟和關閉)
  • 設置延遲下載(防止訪問過於頻繁,設置為2s甚至更高)
  • Google Cache和Baidu Cache:如果可能的話,使用谷歌或百度等搜索引擎服務器頁面緩存的頁面數據。
  • 使用IP池:VPN和IP代理。

scrapy的logging設置

scrapy中Log Levels分為五個級別:

CRITICAL:----嚴重錯誤

ERROR:------一般錯誤

WARNNING---警告信息

INFO------------一般信息

DEBUG--------調試信息

通過setting.py文件,可以進行一下設置,用來配置logging:

LOG_ENABLED:默認為True,啟用logging

LOG_ENCODING:默認為utf-8,logging使用編碼

LOG_FILE:默認為None,在當前目錄下創建logging輸出文件的文件名

LOG_LEVEL:默認為DEBUG,log的最低級別

LOG_STDOUT:默認為False,如果為True時,進程所有標准輸出(及錯誤)都將被重定向到log中,例如,執行print("hello"),將會在scrapy的log中顯示。

一般情況下,實際設置以下內容就足夠:

LOG_FILE=“文件名.log”

LOG_LEVEL="INFO"

Request/Response的重要參數

Request中的主要參數:

url: 就是需要請求,並進行下一步處理的url

callback: 指定該請求返回的Response,由哪個函數處理

method: 請求一般不需要指定,默認為GET方法,可以設置為“GET”,“POST”,"PUT"等,且保證字符串大寫。

headers:請求時,包含的頭文件。一般不需要。

meta: 比較常用。在不同請求之間傳遞數據時使用,字典dict類型。

encoding: 使用默認的utf-8就行。

dont_filter:  表明該請求不由調度齊齊過濾。這是當你想使用多次執行相同請求時,忽略重復的過濾。默認為False.

Response中的重要參數:

status: 響應碼

_set_body(body): 響應體

_set_url(url):響應url

Scrapy發送POST請求

scrapy中一般使用如下方法發送POST請求:

yield scrapy.FormRequest(url, formdata, callback)

 如果希望程序執行一開始就發送POST請求,可以重寫Spider類的start_requests(self)方法,並且再調用start_url中的url

使用FormRequest.from_response()方法,模擬用戶登錄。

通常網站通過實現對某些表單字段(如數據或登錄界面中的認證令牌等)的預填充。使用scrapy抓取網頁時,如果需要預填充或重寫用戶名、用戶密碼等表單字段時,

可以使用FormRequest.from_response()方法實現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM