1. 程式人生 > 實用技巧 >輕鬆製作蜘蛛:GUI FOR SCRAPY SHELL

輕鬆製作蜘蛛:GUI FOR SCRAPY SHELL

作為Scrapinghub的python開發人員,我花了大量時間在Scrapy shell中。這是Scrapy附帶的命令列介面,可讓您執行簡單的,相容Spider的程式碼。當然,它可以完成工作,但是在某些情況下命令列介面可能會變得有點怪異,我發現我經常會通過這一點。我在工具設計和任務自動化方面有一定的背景,因此我自然就開始想知道如何改善自己的經驗並幫助將更多的時間集中在構建出色的蜘蛛上。在聖誕節期間,我花了一些空閒時間來改善這種體驗,這是我的第一個python軟體包Scrapy-GUI

Scrapy-GUI提供了兩種不同的UI工具來幫助構建Scrapy蜘蛛,但是今天我將集中討論直接整合到Scrapy shell中的部分

-load_selector方法。

安裝和啟用

首先,安裝部分很簡單,就像在Python Package Index上一樣。您需要做的就是通過pip安裝它。請注意,它需要python 3.6+

安裝後,要在外殼中使用它,只需從模組匯入負載選擇器功能。為此,請在您的Shell中使用以下程式碼。

from scrapy_gui import load_selector

然後,例如,如果您要將響應載入到編寫的UI中:

load_selector(response)

載入選擇器後,將開啟Shell-UI視窗。

使用工具標籤

使用“工具”選項卡可以測試解析器的三個元素-查詢,解析器和處理器。

這個小標籤可以最大程度地改善我的抓取體驗。在一個地方,我可以輕鬆地看到提取的所有三個步驟,這使我可以快速觀察結果並進行更改,以最好地選擇所需的資訊型別。

查詢輸入是必填項,可以在左上角找到。儘管Scrapy可以處理XPath和CSS查詢,但GUI當前僅允許您測試CSS查詢。您在此處鍵入的任何內容都將返回與執行程式碼等效的結果。

selector.css(your_query).getall()

Regex輸入允許您測試查詢的正則表示式過濾。選中此框後,它將更新您的查詢,以便它執行程式碼。

selector.css(your_query).re(your_regex)

最後,使用Function輸入,您可以編寫python程式碼來處理查詢的輸出。

這段程式碼可能非常複雜,例如,在下圖中,我匯入了JSON包,並用它來解析內容並提取特定元素。

對於功能選項卡,有兩個要求:

  1. 它必須定義一個名為user_fun的函式該函式結果選擇器作為引數。
  2. user_fun函式必須返回一個列表。

該程式碼通過python的exec函式傳遞您的函式,以定義一個名為user_fun的函式,然後將查詢結果和初始選擇器傳遞給該函式。

使用者的想法

我在Scrapinghub的日常工作中一直依賴Scrapy-GUI。我在這裡肯定有偏見,但是老實說,我覺得通過CLI使用簡單UI帶來的UX有了很大的改進。

作為終端使用者,我會說功能部分可能是此選項卡中我最喜歡的部分之一。必須在CLI Shell上編寫多行縮排程式碼會很快變得非常痛苦。例如,我通常會忘記在for迴圈之前寫一個收集器變數,而只注意到其中的幾行,這迫使我一直回到起點!複製/貼上變得更糟-我經常會出現縮排錯誤,尤其是當我複製/貼上其中包含空行的函式定義時。

非常接近的第二個是結果選項卡-能夠輕鬆檢視我的查詢結果而不必淹沒我的視窗真是天賜之物!不僅因為我可以輕鬆檢視所有結果,還因為不需要向上滾動以再次檢查我的查詢或處理器是否需要更改。

結論

這樣就結束了對Scrapy-GUI的簡要介紹。我希望這足以讓您在構建自己的Scrapy蜘蛛時開始使用它。如果您遇到任何錯誤或有任何反饋意見,請隨時在其Github上開啟問題,甚至建立一個fork並提交一個Pull請求!

如果您想大規模抓取網路,請檢視我們的開發人員工具,該工具可輕鬆在雲中執行Spider並處理JS渲染代理旋轉

或者,如果您厭倦了編寫自己的抓取工具和除錯Spider的操作,則可能需要檢視我們的Web抓取解決方案,並讓我們的專家處理您的資料提取需求。

轉載至:https://blog.scrapinghub.com/building-spiders-made-easy-gui-for-your-scrapy-shell?success=true 谷歌進行的