Golddata如何采集需要登錄/會話的數據?

概要

本文將介紹使用GoldData半自動登錄功能,來采集需要登錄網站的數據。GoldData半自動登錄功能,就是指通過腳本來執(zhí)行登錄,如果需要驗證碼或者其它內容需要人工輸入時,可以通過收發(fā)郵件來執(zhí)行登錄流程。

下載例子

為了講解方便,我們以采集mydict的單詞數據來講解采集需要登錄的網站數據。這個mydict例子程序可以從開源網站下載到(?https://github.com/TheGoldData/mydict/releases?,或?https://gitee.com/golddata/mydict/attach_files?)。

下載之后,打開命令行,運行下面的命令就可以啟動例子程序。

java -jar mydict.war

啟動之后,打開瀏覽器,輸入網址http://localhost:8080/打開一個登錄頁面。如下圖所示:

輸入用戶名和密碼(都是admin),就可以打開首頁單詞列表。

編寫登錄和檢查會話腳本

點擊“采集管理》網站管理”,點擊“添加”按扭,添加名為mydict的站點。如下所示:

接下來配制登錄和檢查會話腳本,點擊“設置半自動登錄”,會打開站點半自動登錄配制頁面,如下圖所示:

登錄腳本如下:

//發(fā)送ajax請求驗證碼

var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});

var arg_={

label:site.name+"驗證碼",

type:1,

content:va.content

}

//waitForInput內置函數將發(fā)送郵件,并等待輸入

//(回復郵件,或者goldData平臺輸入),

//并把輸入內容當作驗證碼返回。

var code=waitForInput(arg_);

var data="username=admin&password=admin&vcode="+code

var m=new? Map()

m.put('Cookie',va.cookie)

//發(fā)送ajax請求執(zhí)行登錄

var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})

//如果正確,將返回狀態(tài)1(登錄成功),和headers信息給GoldData,

//否則返回0(登錄失?。?/p>

if(content.headers){

m.putAll(content.headers)

}

var ret={status:1,headers:m}

if(content.status!=200){

? ? ret.status=0

}

ret

檢查腳本如下:

```javascript

var ret=true;

if(html.contains("我的單詞-登錄")){

ret=false

}

ret;

配制好之后,我們回到網站管理頁面,點擊“啟動登錄”,則會開始執(zhí)行“自動登錄”,這之后,點擊“查詢”按扭來刷新頁面,可以看到“等待輸入”的狀態(tài)。如下圖所示:

此時,您設置的通知郵箱,也應該同時收到了郵件。點開郵件,或者點擊頁面上的“錄入等待輸入”按扭,將會看到如下內容:?

依據郵件內容,回復郵件“{{qcxe}}”,就可以讓程序繼續(xù)執(zhí)行。在golddata頁面里輸入"qcxe",效果是一樣的。程序將會回到“waitForInput()”,并且返回輸入的內容。

回復之后,我們將在golddata頁面里,點擊“查詢”刷新頁面,mydict的登錄狀態(tài)會變?yōu)椤耙训卿洝?。如下圖所示:

接下來,我們可以定義抓取規(guī)則。

定義抓取規(guī)則

在添加規(guī)則之前,我們還需要定義類似于表結構的數據集。如下圖所示:

接下來,點擊“采集管理》規(guī)則管理”,添加規(guī)則,打開添加規(guī)則頁面,如下圖所示:?

抓取規(guī)則腳本如下:

[

? {

? ? __sample: http://localhost:8080/word/index?pageNum=2

? ? match0: http\:\/\/localhost\:8080\/word\/index(\?pageNum=\d+)?

? ? fields0:

? ? {

? ? ? __model: true

? ? ? __dataset: word

? ? ? __node: "#content? ul >li"

? ? ? sn:

? ? ? {

? ? ? ? expr: ""

? ? ? ? attr: ""

? ? ? ? js: md5(item.name)

? ? ? ? __label: ""

? ? ? ? __showOnList: false

? ? ? ? __type: ""

? ? ? ? down: "0"

? ? ? ? accessPathJs: ""

? ? ? ? uploadConf: s1

? ? ? }

? ? ? name:

? ? ? {

? ? ? ? expr: h5

? ? ? ? attr: ""

? ? ? ? js: ""

? ? ? ? __label: ""

? ? ? ? __showOnList: true

? ? ? ? __type: ""

? ? ? ? down: "0"

? ? ? ? accessPathJs: ""

? ? ? ? uploadConf: s1

? ? ? }

? ? ? uk:

? ? ? {

? ? ? ? expr: li span.uk

? ? ? ? attr: ""

? ? ? ? js: source.replace("uk: ",'')

? ? ? ? __label: ""

? ? ? ? __showOnList: false

? ? ? ? __type: ""

? ? ? ? down: "0"

? ? ? ? accessPathJs: ""

? ? ? ? uploadConf: s1

? ? ? }

? ? ? us:

? ? ? {

? ? ? ? expr: li span.us

? ? ? ? attr: ""

? ? ? ? js: source.replace("us: ",'')

? ? ? ? __label: ""

? ? ? ? __showOnList: false

? ? ? ? __type: ""

? ? ? ? down: "0"

? ? ? ? accessPathJs: ""

? ? ? ? uploadConf: s1

? ? ? }

? ? }

? ? fields1:

? ? {

? ? ? __node: .pagination a

? ? ? href:

? ? ? {

? ? ? ? expr: a

? ? ? ? attr: abs:href

? ? ? ? js: ""

? ? ? ? __label: ""

? ? ? ? __showOnList: false

? ? ? ? __type: ""

? ? ? ? down: "0"

? ? ? ? accessPathJs: ""

? ? ? ? uploadConf: s1

? ? ? }

? ? }

? }

]

然后點擊測試,將會進行測試抓取。我們發(fā)現數據的確被抓取到了,如下圖所示:?

配制抓取器抓取

這和之前是一樣的,將抓取器設置抓取站點“mydict”.然后點擊開始抓取。然后會在數據管理里面查看抓取的數據。

結論

GoldData半自動登錄實質是提供了一個可以人工介入來異步獲取會話的框架,既可以調用AI接口做到完全自動登錄;也可以將類似于驗證碼需要復雜識別需要提供輸入時,直接將cookie或者token信息通過郵件收發(fā)到GoldData平臺(這樣可以不管CAPTCHA多復雜 ),都可以讓GoldData抓取數據的動作持續(xù)進行下去。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 概述 通常抓取級聯(lián)數數據情況不多,但要是真需要時,確多了一些麻煩,比如抓取商品分類級別信息等。本內容將講述如何采集...
    takemefly100閱讀 1,106評論 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,811評論 1 45
  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,130評論 2 17
  • 本博客轉自:「作者:若愚鏈接:https://zhuanlan.zhihu.com/p/22361337來源:知乎...
    韓寶億閱讀 2,933評論 0 3
  • 一支筆, 如劍起舞動, 橫墨飛揚, 豎直方正, 紙下周周練, 再提次次起。 一支筆, 也許它比不了境遇中的仙女, ...
    楓橋下的光閱讀 311評論 0 4

友情鏈接更多精彩內容