scrapy專利爬蟲(二)——請求相關

scrapy專利爬蟲(二)——請求相關

在這裏筆者將會介紹一些關於發送request的相關內容。

Spider

Spider默認需要填寫三個參數:

name spider的獨立名稱,必須唯一
allowed_domains 允許爬取的範圍,以專利爬蟲爲例,不會超出專利網站的範圍,所以只需要填寫”pss-system.gov.cn”即可。
start_urls 起始url,spider會首先請求這個參數裏的地址。

Request和FormRequest

在Spider之後,如果想繼續深入爬取,可以使用Requset或FormRequest對象建立新的鏈接。

  • 需要指定Request/FormRequset的callback參數,這是一個含reponse的回調函數,這樣當請求完成後,scrapy會自動調用所設定的回調函數處理reponse。
  • 參數傳遞,Request和FormRequest都用meta這個參數,這個參數會跟隨reponse在callback參數的回調函數中出現。所以可以進行參數傳遞。
  • 設定請求的method是get,post等。
  • 關於FormRequest,這是一個可以用來發送表單數據的請求,有個formData參數,可帶tuple格式參數
  • 其他參數詳見官方文檔

在這裏必須要解釋的一個python關鍵字是yield,筆者的理解這是一個迭代對象生成器。對於list等可迭代對象,可以用函數的方式生成,只要在函數中使用yield這個關鍵字,代碼在執行的時候會先掛起yield前的所有操作,當對象產生迭代行爲,如for循環時纔會執行前面的代碼。在scrapy中將會經常使用這個關鍵字,發送請求。

下載延時

在settings.py文件中,可以設置請求完成後的文件下載延時DOWNLOAD_DELAY,爲了減輕服務器的壓力這個延時不能設置得太低。

部分中間件

  • UserAgentMiddleware

可以用來隨機替換程序發送請求請求的User-Agent參數,僞裝各種瀏覽器,不會輕易被服務器發現。

class RandomUserAgentMiddleware(UserAgentMiddleware):
    def process_request(self, request, spider):
        request.headers.setdefault('User-Agent', HeadersEngine().getRandomUserAgent())
  • HttpProxyMiddleware

可以用來實現ip代理的功能

class ProxyMiddleware:
    def process_request(self, request, spider):
        request.meta['proxy'] = "http://" + 你的代理ip + : + 你的代理ip的端口號
  • 如何開啓中間件

在settings.py文件中,有這樣一段代碼:

DOWNLOADER_MIDDLEWARES = {
    'PatentCrawler.middlewares.ProxyMiddleware': 543,
    'PatentCrawler.middlewares.RandomUserAgentMiddleware': 542
}

需要在花括號內將定義的中間件填寫上去,並填寫優先級。

源碼下載

讚賞
微信支付 支付寶
微信 支付寶
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章