一.場景簡介
1.場景描述:采集房天下最新二手房信息。
2.入口網址:https://tj.esf.fang.com/
3.采集內容:
采集天津市房天下,二手房模塊中的所有二手房的標題、價格、戶型、面積、單價、朝向、樓層、裝修、小區、區域、聯系人、電話。
二.思路分析
|配置思路概覽
|配置步驟
1. 新建采集任務
選擇【采集配置】,點擊任務列表右上方【+】號可新建采集任務,將采集入口地址填寫在【采集地址】框中,【任務名稱】自定義即可,點擊下一步。
2.翻頁配置
獲取二手房頁面中全部翻頁鏈接,觀察翻頁鏈接規律發現:
https://tj.esf.fang.com/house/i32/ 第二頁鏈接
https://tj.esf.fang.com/house/i33/ 第三頁鏈接
https://tj.esf.fang.com/house/i34/ 第四頁鏈接
不難發現,翻頁鏈接組成為:
https://tj.esf.fang.com/house/i+頁數+/
①故添加腳本如下:
腳本文本如下所示:
var foor = DOM.FindClass("shop_list shop_list_4","div",0 );//找到class為shop_list shop_list_4的節點 var foora= DOM.FindName("dl",foora );//找到foor節點下名為dl的節點 while(foora)//如果是foora節點 { url link;//定義一個url var pro = DOM.FindName("dd",foora ); //找到foora節點下name為dd的節點 link.urlname= url.StdUrl(URL.urlname,pro.child.child.href);//輸出鏈接為pro節點的子節點的子節點的href link.title =pro.child.child.title;//輸出鏈接標題為pro節點的子節點的子節點的title link.tmplid = 2;//關聯模板2 RESULT.AddLink(link);//結果輸出一條鏈接 foora = foora.next;//跳到foora節點的下一個節點,即下一個【dl】的節點 }
②采集預覽
3.鏈接抽取
①新建模板二,并新建一個鏈接抽取,用來抽取每個翻頁中所有二手房鏈接。
②列表鏈接需要腳本配置,操作如下圖所示:
③查看頁面源碼,打開瀏覽器中該頁面,點擊F12,點擊指針按鈕,如下圖所示,用指針按鈕選中所需要的二手房鏈接,這時在右側出現對應源碼內容。說明鏈接在class為【shop_list shop_list_4】的節點下。
④經過觀察發現,我們要找的是【shop_list shop_list_4】節點下每一個名為【dl】的節點對應一個二手房信息。
每個【dl】節點中的名為【dd】節點的子節點的子節點的href就是該二手房的鏈接。
⑤根據以上思路,具體配置腳本如下,配置好腳本后點擊右上角【保存】。
文本如下所示:
var foor = DOM.FindClass("shop_list shop_list_4","div",0 );//找到class為shop_list shop_list_4的節點
var foora= DOM.FindName("dl",foora );//找到foor節點下名為dl的節點
while(foora)//如果是foora節點
{
url link;//定義一個url
var pro = DOM.FindName("dd",foora );//找到foora節點下name為dd的節點
link.urlname= url.StdUrl(URL.urlname,pro.child.child.href);//輸出鏈接為pro節點的子節點的子節點的href
link.title =pro.child.child.title;//輸出鏈接標題為pro節點的子節點的子節點的title
link.tmplid = 2;//關聯模板2
RESULT.AddLink(link);//結果輸出一條鏈接
foora = foora.next;//跳到foora節點的下一個節點,即下一個【dl】的節點
}
⑥采集預覽如下所示:
2. 數據抽取
①鏈接抽取完成進入數據頁,在原有模板基礎上,右鍵選擇【添加模板】,新添加的模板,右鍵【添加數據抽取】。
②此時要完成數據建表的工作:選擇【數據建表】,點擊【采集數據表結構】中的【+】,即可添加數據表,名稱可以自定義,在此命名為房天下表單。
③數據表配置完成,選擇【數據抽取】右側數據屬性配置,表單選擇剛建立的“房天下”數據表,則可看到表單中的字段在左側顯示。
④點擊腳本窗口,選擇數據抽取腳本
⑤觀察所需字段在頁面中的位置,瀏覽器打開任意一個二手房詳情頁,點擊F12,點擊指針按鈕,如下圖所示,用指針按鈕選中所需要的二手房字段信息,這時在右側出現對應源碼內容。
name_字段:如下圖所示可知,本字段在class為【floatl tit_details】的節點下。
price字段:如下圖所示可知,本字段在class為【trl-item price_esf sty1】的節點下。
type_字段:如下圖所示可知,本字段在class為【tr-line clearfix】節點的子節點下。
area字段:如下圖所示可知,本字段在class為【trl-item1 w182】節點的子節點下。
priceper字段:同理在class為【trl-item1 w132】節點的子節點下。
orientation字段:同理在class為【trl-item1 w146】節點的子節點下。
floor字段:雖然本字段在class為【trl-item1 w182】節點的子節點下,但是如下圖所示,本頁源碼中不只一個trl-item1 w182,所以不能用同上述幾個字段一樣的方法來獲取。
如下圖所示,通過頁面源碼觀察可發現,本字段在class為【tab-cont-right】的節點的子節點的下一個的下一個的下一個節點中的class為【trl-item1 w182】的節點中。
Renovate字段:由圖可知,本字段在class為【tr-line clearfix】的節點下的class為【trl-item1 w132】的子節點中。
Estate字段:由圖可知,本字段在class為【tr-line】的節點下的class為【rcont】的節點中的所有文本。
zone_字段:由圖可知,本字段在class為【trl-item2 clearfix】的節點下的class為【rcont】的節點中的所有文本。
name_字段:由圖可知,本字段在class為【zf_jjname】的節點中的所有文本內容。
Tel字段:由圖可知,本字段為classid為【AgentTel】的字段中的value屬性值。
⑥綜上所述,數據抽取腳本如下所示:
⑦以上完成全部字段配置,效果預覽如下:
三.采集步驟
模板配置完成,采集預覽沒有問題后,可以進行數據采集。
①首先要建立采集數據表:
選擇【數據建表】,點擊【表單列表】中該模板的表單,在【關聯數據表】中選擇【創建】,表名稱自定義,這里命名為fangtianxia(注意命名不能用數字和特殊符號),點擊【確定】。
創建完成,勾選數據表。
②選擇【數據采集】,勾選任務名稱,點擊【開始采集】,則正式開始采集。
③可以在【數據瀏覽】中,選擇數據表查看采集數據,并可以導出數據。
四.課后回顧
FindClass(class名,標簽類型,開始查找結點):當符合條件的class名稱唯一時,使用class名來查找結點。
FindName(標簽名,開始查找結點):當查找范圍內,符合條件的數據標簽唯一時,可以使用標簽名稱查找標簽結點。
GetTextAll(需要獲取文本的結點,使用的字符編碼):獲取該html標簽節點及所有子節點的可見文本。
Child:孩子頻道節點。
FindId(idVal):通過標簽的ID屬性值查找標簽節點,其中idVal表示待查找標簽ID屬性值。