如何在神箭手上快速開發爬蟲——第五課 如何設定自定義輸入【58同城二手房採集】...

weixin_33912445發表於2017-11-07

注:

1、本課完整的爬蟲程式碼可以在神箭手示例程式碼中檢視:完整的程式碼點這裡

2、如何在神箭手上執行程式碼,請檢視文件:怎麼執行程式碼點這裡

3、更詳細的爬蟲開發教程,請檢視文件:完整的開發文件點這裡


大家好,我是神箭手的遊牧老師~

今天繼續給大家帶來如何在神箭手上快速開發爬蟲 系列教程的第五課:如何設定爬蟲的自定義輸入。

從這一課開始,我們要進入進階學習了,對於基礎知識還不熟悉的童鞋,請先從第一課開始學起啊:第一課點這裡

在交付爬蟲使用的時候,我們通常需要能夠讓使用者按照自己的需求來爬取,比如只爬某些分類的文章或者只爬某個城市的資料等。那這種變數就不能直接在程式碼裡寫死了,而需要有一個介面可以讓使用者設定,然後在程式碼中根據使用者設定的具體值來爬取某些網頁。

對於這種使用場景,神箭手提供了最簡單靈活的解決方案:自定義輸入。開發者只需要通過註釋標註某些變數,使用的時候就可以通過神箭手的爬蟲設定介面輸入變數值,然後在程式碼中根據具體值來處理了。so easy~

我們來舉個簡單的栗子:

比如爬取58同城的二手房資訊,使用者提出需求:我要自定義爬哪些城市的二手房。

第一步:

首先需要將城市作為自定義輸入的變數,在神箭手上程式碼是這樣寫的:

var cities = ["北京"];//@tags(cities,58上的城市名,分別爬取這些城市的二手房資訊)

通過註釋來標註cities變數為自定義輸入項,基本格式是:

var 變數名 = 變數的值;//@輸入方式(變數名, 變數描述方便使用者理解)

這樣標註後的變數會自動在神箭手的爬蟲設定中顯示:

2069704-a00ed7c07f791a93.png

輸入方式包括以下型別,神箭手會自動根據輸入方式在爬蟲設定中顯示相應的輸入控制元件:

1、input:其中包括string、int、bool、陣列

2、tags:string陣列,常用於關鍵字或者簡短文字的輸入

3、select:string,用於下拉選擇框

4、password:string,用於輸入密碼

更多型別和每個型別的詳細說明請查閱開發文件:更詳細的說明點這裡

這裡只是簡單介紹瞭如何使用自定義輸入,神箭手還支援更復雜的自定義形式,包括多個輸入項、設定哪些輸入項為必填項、不同輸入項之間的關聯等

第二步:

拿到引數的值(城市名)之後,程式碼中需要根據這些名字獲取不同城市要爬取的入口頁url,我們在initCrawl函式中進行操作:

2069704-aa13cc0a11508a07.png

我們首先訪問58的城市列表網頁,然後根據輸入的城市名查到每個城市的58首頁連結,然後就可以拼出每個城市的二手房首頁url了。

這裡我們多做了一步,如果不輸入具體的城市,我們們就爬所有城市的!

然後就是根據列表頁發現內容頁url,然後從內容頁中抽取資料的程式碼了,具體過程不是本課的重點,完整程式碼大家可以檢視本文開頭的連結。

第三步:

大家可以把程式碼拷貝到神箭手的爬蟲應用中,然後點選爬蟲設定,輸入一個城市名;點選爬蟲總覽頁,點選啟動,等爬蟲初始化完成,爬取結果就源源不斷的出現啦:

2069704-bdb17afa0552d4c9.png

是不是很簡單!!!

最後說兩句:

對於在神箭手上開發還不熟悉的童鞋,建議多看看神箭手的開發文件:神箭手開發文件點這裡

本課完整程式碼:完整程式碼點這裡

好啦,我們們下課再見,對爬蟲和大資料感興趣的童鞋可以關注神箭手技術部落格 or神箭手官網

相關文章