目錄
    采集直播視頻數據
    視頻教程:模板下載:
    l 采集網站

    【場景描述】本文以西瓜視頻為例,向大家介紹如何采集直播視頻及主播信息。

    【使用工具】前嗅ForeSpider數據采集系統,點擊下方即可免費下載


    http://www.bendalayoga.com/view/forespider/view/download.html


    【使用工具】前嗅ForeSpider數據采集系統,點擊下方鏈接即可免費下載。

    【入口網址】https://live.ixigua.com/category/1/109/

    【采集內容】

    采集西瓜視頻中的所有直播視頻及主播信息,包括主播昵稱、房間號、視頻地址、網站名稱、直播網址、直播視頻、采集時間、主播熱度。

     


    【采集效果】

     


    l 思路分析

    配置思路概覽:

     

     

    l 配置步驟

    1. 新建采集任務

    選擇【采集配置】,點擊任務列表右上方【+】號可新建采集任務,將采集入口地址填寫在【采集地址】框中,【任務名稱】自定義即可,點擊下一步。

     


    選擇普通翻頁,點擊完成按鈕,即創建任務完成。

     

     

    2. 直播分類鏈接獲取

    ①在瀏覽器中點擊不同分類的直播,將對應鏈接復制出來,觀察鏈接規律。

     


    發現不同分類直播的鏈接規律為:

     https://live.ixigua.com/category/1/分類id/  

    ②點擊頁面右鍵【查看源文件】,在源碼中查找分類id,發現分類id在源碼的js中。

     


    將該段源碼復制進行js格式化在線轉化,可更加清楚的看到結構。如下圖所示能夠看出,我們需要的分類名稱和id是在【sideBarData】數組的第三個對象中的【childs】數組中。

     

     

    ③打開腳本窗口,新建腳本。

     


    根據剛才發現的規律,用腳本來拼分類鏈接,編寫好后點擊右上角保存。

    具體如下所示:

     


    腳本文本:

    var jsonStr = DOM.GetSource().ToStr().Middle("SSR_HYDRATED_DATA\">","</script>");//返回當前html中位于【SSR_HYDRATED_DATA\">】和【</script>】之間源碼部分
    jScript js;//定義一個jd
    var jsobj = js.RunJson(jsonStr); //執行jsonStr代碼,并返回一個json對象
    var arr = jsobj.sideBarData;  //定義arr為jsobj下的【sideBarData】
    for(int i = 2;i<arr.size;i++){//執行【sideBarData】數組,一直到最后。
    var crr = arr[i].childs;//crr為【sideBarData】第三個對象的【childs】數組
    for(j in crr){//執行【childs】數組
      var name = crr[j].name;//定義name為【childs】數組每個對象中的name
      var id = crr[j].id;//id為【childs】數組每個對象的id
         url u;//定義一個url
      u.title=id+"@"+name;//返回url的名稱為id@name
      u.urlname="https://live.ixigua.com/category/1/"+id+"/";//返回url為https://live.ixigua.com/category/1/id/
      u.entryid=CHANN.id;
      u.tmplid=2;//關聯模板2
      RESULT.AddLink(u);//返回以上為一條鏈接數據
    }
    }

    ④采集預覽,復制任意一條分類鏈接,在瀏覽器中打開,看是否為該頁內容。

     

     

    3.各主播直播鏈接

    ①新建模板02,在模板02下建一個鏈接抽取,具體操作如下圖所示。

     


    ②在瀏覽器上打開任意一個分類,復制價格主播直播鏈接,觀察其規律,具體如下:


    ③不難發現主播直播規律為:https://live.ixigua.com/主播id/   

    ④點擊F12,查看請求,發現主播id在下圖所示請求中https://live.ixigua.com/api/feed/category/1/74?_signature=iYkdqAAgEB7evlXzywm4yYmJHbAAOmK

    (測試發現鏈接后半部分不加也可以打開該請求,故腳本中省略后半部分)

     


    請求地址規律為:https://live.ixigua.com/api/feed/category/1/分類id

    ⑤根據剛才發現的規律,用腳本來拼分類請求鏈接,獲取到請求中的源碼,從而拼出主播頁面鏈接。

    具體如下所示:

     


    腳本文本:

    var catId = URL.title.Left("@");//定義catID為當前鏈接標題@的左側字符,即分類id
    var ura = "https://live.ixigua.com/api/feed/category/1/"+catId+"/ "; //拼請求
    var doc = EXTRACT.OpenDoc(CHANN,ura,"",header);//打開請求
    if(doc){
        var cdom=doc.GetDom();//返回doc的dom操作樹對象
        var str = cdom.GetSource().ToStr();//從cdom中轉化為字符串類型
        var jsonstr=cdom.UnEscape(str);//對cdom中的字符串進行解碼(將其中的unicode編碼部分轉中文)
        jScript js;//定義一個js
        var jsobj = js.RunJson(jsonstr); //返回json對象
        var arr = jsobj.data.liveSource;  //arr為liveSource數組
        if(arr.size > 0){
            for(i in arr){
            url u;//定義一個鏈接
            u.title = URL.title.Left("@")+"@"+arr[i].watching_count+"##"+arr[i].short_id+"*"+arr[i].user_name;//返回鏈接名稱為本層鏈接標題@左側部分+@+主播watching_count即熱度+##+主播id+用戶名
            u.urlname ="https://live.ixigua.com/"+arr[i].short_id+"/";//返回鏈接為https://live.ixigua.com/主播id/
            u.tmplid = 3;//關聯模板3
            u.entryid = CHANN.id;
            RESULT.AddLink(u);
            }
        }
    }
    EXTRACT.CloseDoc(doc);

    ⑥保存腳本后,點擊右上角【采集預覽】按鈕,雙擊任意一條鏈接,進入下一層,復制任意一條主播鏈接,在瀏覽器打開,看是否成功抽取主播鏈接。

     



    3.抽取主播數據

    ①新建一個抽取模板,在其下新建一個數據抽取,具體操作如下所示:

     


    ②數據建表

    點擊圖中加號,新建一個數據表,然后添加字段,各字段屬性如下圖所示:



    ③將新建好的數據表,關聯到模板中去,如下圖所示:

     

     

    ④字段抽取

    字段抽取使用腳本抽取的方法,在數據抽取模板中新建一個腳本窗口。

     

     

    ⑤采集預覽,復制一條翻頁的鏈接,在瀏覽器中打開。

     


    ⑥鼠標單擊右鍵,查看源文件,觀察可發現直播視頻鏈接在如下圖所示位置。

     

     

    將以上一段js格式化后,觀察其位置,為【roomData】節點下的【playInfo】數組的第一個數組對象的FlvUrl。且本視頻鏈接部分為unicode編碼,需要轉碼一下。

     


    ⑦根據以上觀察,編寫數據抽取腳本,具體如下圖所示:

     


    腳本文本如下所示:

    var str = DOM.GetSource().ToStr().Middle("SSR_HYDRATED_DATA\">","</script>");//從源碼中獲取有視頻鏈接部分,并轉化為字符串格式
    var domstr=DOM.UnEscape(str);//將str中的字符串進行解碼(將其中的unicode編碼部分轉中文)
    jScript js;//定義一個js
    var jsobj = js.RunJson(domstr); //返回json對象
    var arr = jsobj.roomData.playInfo;  //找到playInfo數組
    var videourl = arr[0].FlvUrl; //videourl為playInfo數組中的第一個對象的FlvUrl
    var hot = URL.title.Middle("@","##");//hot為本模板鏈接標題@和##中間值
    var id = URL.title.Middle("##","*");//id為本模板鏈接標題##和*中間值
    var nick = URL.title.Right("*");//nick為本模板鏈接標題*右邊的值
    var ur= URL.urlname;//ur為當前本模板鏈接
    time t;//定義一個時間t
    record re;//返回一個數據
    re.id=id; //主播ID
    re.nickname=nick; //主播昵稱
    re.videoURL= videourl; //視頻地址
    re.platform ="西瓜直播";  //平臺
    re.page_url= ur; //直播頁面網址
    re.video_ex= ".flv"; //后綴
    re.video = videourl; //視頻文件
    re.gettime = t.ToCn(); //獲取當前網頁時間
    re.hot = hot; //人氣值
    RESULT.AddRec(re, TMPL.fstdoc.schemaid);//結束

    ⑧采集預覽

    點擊右上角采集預覽,如下圖所示:

     

     

    l 采集步驟

    模板配置完成,采集預覽沒有問題后,可以進行數據采集。

    ①首先要建立采集數據表:

    選擇【數據建表】,點擊【表單列表】中該模板的表單,在【關聯數據表】中選擇【創建】,表名稱自定義,這里命名為【xigua】(注意命名不能用數字和特殊符號),點擊【確定】。創建完成,勾選數據表,并點擊右上角保存按鈕。

     


    高級設置,在高級配置中,設置采集視頻的最大限制,如下圖所示,這樣爬蟲采集15M就會停止采集,否則爬蟲將一直采集一個直播視頻直到直播結束。設置好后,點擊右上角保存按鈕。



    ③選擇【數據采集】,勾選任務名稱,點擊【開始采集】,則正式開始采集。

     

    圖片


    可以在【數據瀏覽】中,選擇數據表查看采集數據,并可以導出數據。

     

    圖片

     

    ⑤導出的文件打開如下圖所示:

     

    圖片


    ⑥導出視頻步驟及結果如下圖所示:

     

    圖片


    *本教程僅供學習交流,嚴禁用于商業用途!



    女人个人私人电话联系杭州的|热久久久久香蕉无品码|爱情岛亚洲永久自拍品质|国产丶欧美丶日本不卡