Python作為腳本語言,功能非常強大,這裡介紹一下爬蟲框架Scrapy有安裝及使用方法介紹。
一、安裝篇
python3在安裝scrapy時,需要twisted的支持,但安裝twisted會需要visual studio的支持,詳見本人的另一文章Python 3.5 安裝scrapy無法找到vcvarsall.bat解決方案.
pip3 install twistedpip install scrapy
二、使用介紹
開始項目scrapy startproject project
此時會生成一個目錄結構如下:
2. shell工具介紹
scrapy自帶shell工具,是進行測試的好地方,我們以起點小說網為例,網址為:https://www.qidian.com/
scrapy shell運行後,我們可藉助一些函數進行數據定位、解析、子連結的提取:
view(response) 查看網頁fetch(url|) 抓新的網頁response.css('a[href') #scrapy內置css選擇器,具體請百度其它文章extractor_first() #解析文本extractor() #解析列表from scrapy.linkextractors import LinkExtractorle=LinkExtractor(restrict_css('a[href]')links=le.extract_links(le)#以上這段代碼用來提取連結
3. 爬蟲實現
3.1 先建一個要爬取內容的類ProjectItem, 存入items.py
3.2 我們在spider文件夾下建一個novelspider.py,寫入相關代碼
此時我們就要用到scrapy shell 幫忙測試了,比如我們要抓取《重生之財源滾滾》這本小說的小說名,可以在shell下用如下代碼得到:
scrapy shell https://www.qidian.com/finishnovels=response.css('.book-mid-info')novels[i].css('h4 a[href]::text').extract_first()'重生之財源滾滾'
通過上面的代碼,我們把小說名給抓出來了.同理可以抓其它欄位,具體代碼如下:
4. 運行爬蟲
回到project目錄,運行scrapy crawl novel_qidian -o box.csv命令其中novel_qidian就是在novelSpider類中的name項, -o box.csv 即以csv文件形式存儲內容以下是爬取到的內容:
scrapy作為一個異步爬蟲框架,非常容易寫出高質量的爬蟲,同時scrapy還有很多功能中間件,對於設置訪問頭,圖片及文件下載都有相應的方法,有興趣的可以深入研究!