【場景描述】采集京東電視分類中的所有商品信息。
【使用工具】前嗅ForeSpider數據采集系統,點擊下方即可免費下載:
http://www.bendalayoga.com/view/forespider/view/download.html
【入口網址】https://list.jd.com/list.html?cat=737,794,798&ev=4155_97865&sort=sort_rank_asc&trans=1&JL=3_%E7%94%B5%E8%A7%86%E7%B1%BB%E5%9E%8B_%E5%85%A8%E9%9D%A2%E5%B1%8F#J_crumbsBar
【采集內容】采集亞馬遜搜索關鍵詞搜索出來的商品信息,包括商品名稱、價格、店鋪和商品鏈接。
【采集效果】如下圖所示:
l 思路分析
配置思路概覽:
l 配置步驟
一. 新建采集任務
選擇【采集配置】,點擊任務列表右上方【+】號可新建采集任務,將采集入口地址填寫在【采集地址】框中,【任務名稱】自定義即可,點擊下一步。
選擇普通翻頁,點擊完成按鈕,即創建任務完成。
二. 商品翻頁鏈接獲取
1.在瀏覽器中點擊第二頁,第三頁和第四頁的翻頁,將翻頁鏈接復制出來,觀察鏈接規律。
發現翻頁鏈接規律為:
https://list.jd.com/list.html?cat=737%2C794%2C798&ev=4155_97865%5E&pvid=ebb0e3c519de4f649049b645a6598eed&page=+2*頁碼-1+&s=+5+(頁碼-2)*6+7&click=0
2.打開剛才新建的模板任務,選中翻頁鏈接,打開腳本窗口,新建一個腳本。
3.根據剛才發現的翻頁規律,用腳本來拼翻頁鏈接。具體如下所示:
腳本文本:
url u;//定義一個url for(var i=1;i<=10;i++)//i表示頁數,此時表示采集1-10頁商品數據 { var a=2*i-1;//定義a為2*頁數-1 var b=5+(i-2)*6;//定義b為5+(頁數-2)*6 u.urlname = "https://list.jd.com/list.html?cat=737%2C794%2C798&ev=4155_97865%5E&pvid=ebb0e3c519de4f649049b645a6598eed&page="+a+"&s="+b+"7&click=0";//根據翻頁規律拼出翻頁請求 u.title = URL.title+"#"+"第"+i+"頁"; //返回鏈接名稱為第i頁 u.entryid = CHANN.id; u.tmplid = 2; //關聯模板2 RESULT.AddLink(u); }
4.采集預覽,復制任意一條翻頁,在瀏覽器中打開,看是否為該頁內容。
三.商品數據抽取
1.新建模板02,在模板02下建一個數據抽取,具體操作如下圖所示。
2.數據建表
點擊圖中加號,新建一個數據表,然后添加字段,各字段屬性如下圖所示:
3.將新建好的數據表,關聯到模板中去,如下圖所示:
4.字段抽取
字段抽取使用腳本抽取的方法,在數據抽取模板中新建一個腳本窗口。
5.采集預覽,復制一條翻頁的鏈接,在瀏覽器中打開。
6.點擊F12,點擊指針(源碼框左上角),讓指針指到第一個商品處,在右側源碼中找到對應位置。
經觀察發現,每個商品的內容在class為【gl-warp clearfix】的節點下的每個name為【li】的節點中。
打開第一個商品的源碼,發現class為【p-price】節點中有商品的價格,class為【p-name p-name-type-3】節點中有商品的名稱和url,class為【p-shop】節點中有商品的店鋪名。
價格位置如下圖所示:
商品名稱和url位置如下圖所示:
商品店鋪名位置如下圖所示:
7.根據以上觀察,編寫數據抽取腳本,具體如下圖所示:
腳本文本如下所示:
record re;//定義一個數據返回類型 var orders = DOM.FindClass("gl-warp clearfix","ul");//定義orders為class為【gl-warp clearfix】的節點 var order=orders.child;//定義order為orders的子節點,即第一個name為【li】的節點 while(order)//寫一個循環,獲取所有name為【li】的節點 { var pri=DOM.FindClass("p-price","div",order).child;//定義pri為order節點下的class為【p-price】節點的子節點 var ti=DOM.FindClass("p-name p-name-type-3","div",order);//定義ti為order節點下的class為【p-name p-name-type-3】節點 var sho=DOM.FindClass("p-shop","div",order).child;//定義sho為order節點下的class為【p-shop】節點的子節點 re.tit = DOM.GetTextAll(ti.child.child);//返回tit值為ti節點的子節點的子節點中的所有文本內容 re.price = DOM.GetTextAll(pri);//返回price值為pri節點中所有文本內容 re.shop = DOM.GetTextAll(sho);//返回shop值為sho節點中所有文本內容 re.url_ = ti.child.href;//返回url_值為ti節點的子節點的href值 RESULT.AddRec(re,this.schemaid); //返回以上數據 order = order.next;//定義order為order下一個節點,即下一個name為【li】的節點 }
8.采集預覽
點擊右上角采集預覽,雙擊任意一條翻頁鏈接,看是否采集到商品信息,如下圖所示:
l 采集步驟
模板配置完成,采集預覽沒有問題后,進行數據采集。
1.首先要建立采集數據表:
選擇【數據建表】,點擊【表單列表】中該模板的表單,在【關聯數據表】中選擇【創建】,表名稱自定義,這里命名為【jingdong】(注意命名不能用數字和特殊符號),點擊【確定】。
創建完成,勾選數據表。
2.選擇【數據采集】,勾選任務名稱,點擊【開始采集】,則正式開始采集。
3.可以在【數據瀏覽】中,選擇數據表查看采集數據,并可以導出數據。
4.導出的文件打開如下圖所示: