中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-20 23:25:25 來源:網絡 閱讀:202 作者:dataman100 欄目:大數據

概要

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

下載例子

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

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

java -jar mydict.war

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

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

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

編寫登錄和檢查會話腳本

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

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

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

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

登錄腳本如下:

//發送ajax請求驗證碼
var va=$ajax('http://localhost:8080/code/vcode?timestamp=1554001708730',{encoding:false});

var arg_={
label:site.name+"驗證碼",
type:1,
content:va.content
}
//waitForInput內置函數將發送郵件,并等待輸入
//(回復郵件,或者goldData平臺輸入),
//并把輸入內容當作驗證碼返回。
var code=waitForInput(arg_);

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

var m=new  Map()
m.put('Cookie',va.cookie)
//發送ajax請求執行登錄
var content=$ajax('http://localhost:8080/doLogin',{method:'POST',headers:m,data:data})

//如果正確,將返回狀態1(登錄成功),和headers信息給GoldData,
//否則返回0(登錄失敗)!
if(content.headers){
m.putAll(content.headers)
}

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

if(content.status!=200){
    ret.status=0
}
ret

檢查腳本如下:

var ret=true;
if(html.contains("我的單詞-登錄")){
ret=false
}
ret;

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

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

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

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

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

回復之后,我們將在golddata頁面里,點擊“查詢”刷新頁面,mydict的登錄狀態會變為“已登錄”。如下圖所示:

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

接下來,我們可以定義抓取規則。

定義抓取規則

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

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

接下來,點擊“采集管理》規則管理”,添加規則,打開添加規則頁面,如下圖所示:
Golddata如何采集需要登錄/會話的數據?

抓取規則腳本如下:

[
  {
    __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: h6
        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
      }
    }
  }
]

然后點擊測試,將會進行測試抓取。我們發現數據的確被抓取到了,如下圖所示:
Golddata如何采集需要登錄/會話的數據?

配制抓取器抓取

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

結論

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岱山县| 肇东市| 黔西| 辽源市| 台州市| 和林格尔县| 中江县| 怀来县| 前郭尔| 天水市| 林芝县| 桦南县| 同江市| 正宁县| 依安县| 盐津县| 固阳县| 平武县| 望都县| 新沂市| 南木林县| 如皋市| 安丘市| 仪陇县| 定结县| 扎囊县| 云安县| 江门市| 长沙市| 泸州市| 衡阳市| 丰城市| 将乐县| 三河市| 黄大仙区| 蒙自县| 崇明县| 旬阳县| 昌宁县| 平遥县| 手游|