首頁  >  文章  >  後端開發  >  如何使用scrapy shell來驗證xpath選擇的結果詳細教學

如何使用scrapy shell來驗證xpath選擇的結果詳細教學

巴扎黑
巴扎黑原創
2017-07-19 14:19:342099瀏覽

1. scrapy shell

是scrapy套件的一個很好的互動性工具,目前我使用它主要用於驗證xpath選擇的結果。安裝好了scrapy之後,就能夠直接在cmd上操作scrapy shell了。

Scrapy Shell

Scrapy終端機是一個互動終端,我們可以在未啟動spider的情況下嘗試及除錯程式碼,也可以用來測試XPath或CSS表達式,查看他們的工作方式,方便我們爬取的網頁中提取的資料。

如果安裝了 IPython ,Scrapy終端將使用 IPython (替代標準Python終端)。 IPython 終端與其他相比更為強大,提供智慧的自動補全,高亮輸出,及其他特性。 (建議安裝IPython)

啟動Scrapy Shell

進入專案的根目錄,執行下列指令來啟動shell:

scrapy shell "http://www.itcast. cn/channel/teacher.shtml"

Scrapy Shell根據下載的頁面會自動建立一些方便使用的對象,例如Response 對象,以及 Selector 物件(對HTML及XML內容)。

當shell載入後,將會得到一個包含response資料的本地 response 變量,輸入 response.body將輸出response的包體,輸出 response.headers 可以看到response的封包。

輸入 response.selector 時, 將取得到一個response 初始化的類別 Selector 的對象,此時可以透過使用 response.selector.xpath()或response.selector.css() 來查詢 response。

Scrapy也提供了一些捷徑, 例如 response.xpath()或response.css()同樣可以生效(如之前的案例)。

Selectors選擇器

Scrapy Selectors 內建XPath 和CSS Selector 表達式機制

Selector有四個基本的方法,最常用的還是xpath:

xpath(): 傳入xpath表達式,返回該表達式所對應的所有節點的selector list列表

extract(): 序列化該節點為Unicode字串並傳回list

#css(): 傳入CSS表達式,傳回該表達式所對應的所有節點的selector list列表,語法同BeautifulSoup4

re(): 根據傳入的正規表示式將資料擷取,回傳Unicode字串list清單


 

#2. ipython

##在官網推薦使用ipython來跑scrapy shell,所以我嘗試安裝。因為之前我的python環境都是透過conda配置的(參考前一篇),透過conda安裝ipython很方便

conda install -c conda-forge ipython
然後整個ipython的套件就會下載下來,因為都是編譯好的,沒有了煩人的編譯失敗的過程了。

 

3. 運行ipython和在ipython上運行scrapy shell

在目前的cmd運行框中,因為已經配置了系統環境,是可以直接運行python包的,所以直接在cmd運行框中敲入ipython就會進入到ipython的運行框,跟系統標準的cmd差不多,但是功能更豐富,色彩更豐富,佈局也能好。

但是當我直接在這上面敲scrapy shell指令,但一直說沒有這個指令,失敗。在這裡卡住了。

後來透過仔細閱讀scrapy shell的說明

If you have IPython installed, the Scrapy shell will use it (instead of the standard Python console). 

#意思是scrapy shell會自己去找ipython的運行框。

於是直接在cmd的標準運行框中輸入scrapy shell ,傳回的結果直接呼叫到ipython的運行框了。

以上是如何使用scrapy shell來驗證xpath選擇的結果詳細教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn