scrapy安裝:
scrapy有幾種安裝方法,這裡隻介紹最簡單實用的,在windows和linux上次方法都能夠适用,安裝過程如下:
- 根據所使用系統的資訊下載下傳安裝python2版本(scrapy目前隻支援python2.6以上3以下的版本)對應的anaconda(https://www.continuum.io/downloads)。因為anaconda中內建了很多python包,可以免去安裝很多依賴。
- 采用anaconda指令安裝scrapy:conda install scrapy
- 使用指令:scrapy startproject + 項目名 , 建立一個scrapy項目
若沒有報錯,且在目前目錄下生成了一個項目檔案則安裝成功。生成項目目錄如下圖所示,被選中的檔案需要自己建立,其餘為系統生成的。
簡單例子測試:
為了進一步确認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啟動爬蟲,此時可能會報錯:
出現該錯誤的原因是因為采用anaconda安裝scrapy時安裝的twisted版本過高,換成17版本以下即可!!!(當時坑了我很長時間)
若在目前目錄下成功生成html檔案,且包含正确的資訊,則說明我們的架構安裝正确且可用。
實際應用案例
在實際應用中,我們爬取的網頁内容會比較複雜,包括如下幾種情況:
- 有時不是直接爬取網址上面的内容,而是需要通過Post請求并設定參數來擷取想要的内容。(post請求處理)
- 還有些情況是要擷取表單的詳細資訊,抓取到表單資料後,還要進一步對表單中出現的位址進行爬取,來擷取詳細資訊。(遞歸爬取http)
- 複雜情況下html的解析(使用xpath和selector)
- 在一個spider中需要處理多個item時應該如何處理。
- 如何采用mongodb資料庫進行資料的持久化。
具體解決方法及源代碼可參考github:https://github.com/windwinds/scrapyProject
(若遇到其他問題可留言讨論)