天天看點

scrapy爬蟲架構安裝與應用(包括post請求、遞歸通路http)

scrapy安裝:

scrapy有幾種安裝方法,這裡隻介紹最簡單實用的,在windows和linux上次方法都能夠适用,安裝過程如下:

  1. 根據所使用系統的資訊下載下傳安裝python2版本(scrapy目前隻支援python2.6以上3以下的版本)對應的anaconda(https://www.continuum.io/downloads)。因為anaconda中內建了很多python包,可以免去安裝很多依賴。
  2. 采用anaconda指令安裝scrapy:conda install scrapy
  3. 使用指令:scrapy startproject + 項目名 , 建立一個scrapy項目

若沒有報錯,且在目前目錄下生成了一個項目檔案則安裝成功。生成項目目錄如下圖所示,被選中的檔案需要自己建立,其餘為系統生成的。

scrapy爬蟲架構安裝與應用(包括post請求、遞歸通路http)

簡單例子測試:

為了進一步确認scrapy安裝的正确性,跑一個簡單的例子,在官網上有一個簡單例子(http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/tutorial.html)

在項目目錄的spiders檔案夾下面建立一個dmoz_spider.py檔案,内容如下:

import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
           

使用scrapy crawl dmoz啟動爬蟲,此時可能會報錯:

scrapy爬蟲架構安裝與應用(包括post請求、遞歸通路http)

出現該錯誤的原因是因為采用anaconda安裝scrapy時安裝的twisted版本過高,換成17版本以下即可!!!(當時坑了我很長時間)

若在目前目錄下成功生成html檔案,且包含正确的資訊,則說明我們的架構安裝正确且可用。

實際應用案例

在實際應用中,我們爬取的網頁内容會比較複雜,包括如下幾種情況:

  1. 有時不是直接爬取網址上面的内容,而是需要通過Post請求并設定參數來擷取想要的内容。(post請求處理)
  2. 還有些情況是要擷取表單的詳細資訊,抓取到表單資料後,還要進一步對表單中出現的位址進行爬取,來擷取詳細資訊。(遞歸爬取http)
  3. 複雜情況下html的解析(使用xpath和selector)
  4. 在一個spider中需要處理多個item時應該如何處理。
  5. 如何采用mongodb資料庫進行資料的持久化。

具體解決方法及源代碼可參考github:https://github.com/windwinds/scrapyProject

(若遇到其他問題可留言讨論)