初學Scrapy,實現爬取網絡圖片並保存本地功能
一、先看最終效果
保存在F:\pics
文件夾下
二、安裝scrapy
1、python的安裝就不說了,我用的python2.7,執行命令pip install scrapy
,或者使用easy_install
命令都可以
2、可能會報如下錯誤
*********************************************************** Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? ***********************************************************
- 1
- 2
- 3
- 1
- 2
- 3
解決方法:安裝libxml2
下載對應的Python的版本,安裝即可,網址:
https://pypi.python.org/pypi/lxml/3.4.4
三、創建項目
1、執行命令
scrapy startproject xiaohuar
- 1
- 1
會自動創建xiaohuar
的scrapy項目
2、項目結構(我用的是WingIDE)
文件說明:
• scrapy.cfg 項目的配置信息,主要為Scrapy命令行工具提供一個基礎的配置信息。(真正爬蟲相關的配置信息在settings.py文件中)
• items.py 設置數據存儲模板,用於結構化數據,如:Django的Model
• pipelines 數據處理行為,如:一般結構化的數據持久化
• settings.py 配置文件,如:遞歸的層數、並發數,延遲下載等
• spiders 爬蟲目錄,如:創建文件,編寫爬蟲規則
四、編寫爬蟲程序
1、在spiders文件夾下創建.py文件
代碼中注釋已經很詳細了,就不解釋了,關於解析html內容,使用的是xpath,之前使用Java的webmagic
爬蟲框架也是使用的此種方式,所示還是比較熟悉,一些插敘語法參考步驟2
2、xpath查詢語法
查詢標簽中帶有某個class屬性的標簽://div[@class=’c1’]即子子孫孫中標簽是div且class=‘c1’的標簽
• 查詢標簽中帶有某個class=‘c1’並且自定義屬性name=‘alex’的標簽://div[@class=’c1’][@name=’alex’]
• 查詢某個標簽的文本內容://div/span/text() 即查詢子子孫孫中div下面的span標簽中的文本內容
• 查詢某個屬性的值(例如查詢a標簽的href屬性)://a/@href
3、運行
進入到xiaohuar目錄,執行
scrapy crawl xiaohuar
可能會報以下錯誤,原因是少win32api
的模塊
解決方法:
選擇對應的版本下載安裝即可地址:
http://sourceforge.net/projects/pywin32/files/
4、關於scrapy shell終端
可以使用scrapy shell進行調試,例如執行
scrapy shell http://www.xiaohuar.com/list-1-1.html
就可以查看得到的數據
5、最后的說明
程序執行過程中可以設置爬取的深度,我這里沒有設置,可能關掉cmd程序還在執行,可以結束python的進程,或者設置爬取深度
五、總結
最近學習在python,實現非常簡單的一個爬蟲當做練習,中間一些模塊的缺少錯誤,在網上查詢還是費了很多的時間,有的回答是沒有解決的,總之自己實踐之后才會更加深刻。