采集當(dāng)當(dāng)網(wǎng)圖書信息
時(shí)間:2023-06-07 18:30:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-06-07 18:30:01 來源:網(wǎng)站運(yùn)營
采集當(dāng)當(dāng)網(wǎng)圖書信息:
l 采集網(wǎng)站【場(chǎng)景描述】采集當(dāng)當(dāng)網(wǎng)計(jì)算機(jī)類中的圖書信息。
【源網(wǎng)站介紹】當(dāng)當(dāng)(
http://www.dangdang.com)是全球知名的綜合性網(wǎng)上購物商城,由國內(nèi)著名出版機(jī)構(gòu)科文公司、美國老虎基金、美國IDG集團(tuán)、盧森堡劍橋集團(tuán)、亞洲創(chuàng)業(yè)投資基金(原名軟銀中國創(chuàng)業(yè)基金)共同投資成立,于美國時(shí)間2010年12月8日在紐約證券交易所正式掛牌上市,成為中國第一家完全基于線上業(yè)務(wù)、在美國上市的B2C網(wǎng)上商城。
【使用工具】前嗅ForeSpider數(shù)據(jù)采集系統(tǒng),免費(fèi)下載:
http://www.forenose.com/view/forespider/view/download.html【入口網(wǎng)址】http://category.dangdang.com/cp01.54.00.00.00.00.html【采集內(nèi)容】采集當(dāng)當(dāng)網(wǎng)中的計(jì)算機(jī)類中的圖書信息,包括所屬一級(jí)分類、二級(jí)分類、書名、簡(jiǎn)介、作者、出版社、出版時(shí)間、價(jià)格、編輯推薦、內(nèi)容簡(jiǎn)介、作者簡(jiǎn)介、目錄、頁面網(wǎng)址等。
【采集效果】如下圖所示:
l 思路分析配置思路概覽:
l 配置步驟1. 新建采集任務(wù)選擇【采集配置】,點(diǎn)擊任務(wù)列表右上方【+】號(hào)可新建采集任務(wù),將采集入口地址填寫在【采集地址】框中,【任務(wù)名稱】自定義即可,點(diǎn)擊下一步。
選擇列表鏈接,點(diǎn)擊完成按鈕,即創(chuàng)建任務(wù)完成。
2.獲取分類鏈接①采集預(yù)覽,查看頁面所有鏈接,查找計(jì)算機(jī)分類鏈接的規(guī)律,發(fā)現(xiàn)所有與計(jì)算機(jī)相關(guān)的分類的鏈接規(guī)律為:
http://category.dangdang.com/cp01.54.
+數(shù)字串+.00.00.00.html
②所以使用地址過濾的方法,過濾鏈接為以下規(guī)律的鏈接:
http://category.dangdang.com/cp01.54./d.00.00.00.html 其中/d表示數(shù)字串,點(diǎn)擊保存,重新測(cè)試,計(jì)算機(jī)分類鏈接就篩選出來了。
2. 抽取圖書商品鏈接①新建一層模板02,并新建兩個(gè)鏈接抽取,第一個(gè)鏈接抽取抽取商品頁鏈接,第二個(gè)抽取翻頁鏈接。
可分別修改名稱為:列表鏈接抽取和翻頁鏈接抽取。
②選擇任意一條分類鏈接,并粘貼到模板02的示例地址處,點(diǎn)擊由上角保存按鈕。
③雙擊內(nèi)置瀏覽器空白處,內(nèi)置瀏覽器顯示該頁面。
④采集預(yù)覽,雙擊任意一條分類鏈接,進(jìn)入圖書商品列表頁,查看頁面鏈接,觀察圖書鏈接規(guī)律,發(fā)現(xiàn)圖書商品鏈接規(guī)律為:
http://product.dangdang.com/+數(shù)字串+.html⑤設(shè)置地址過濾,過濾規(guī)律為
http://product.dangdang.com//d.html/e的鏈接,其中/d表示數(shù)字串,/e表示鏈接結(jié)束。采集預(yù)覽,圖書商品鏈接已抽取到。
3.抽取翻頁鏈接采集預(yù)覽,雙擊任意一條分類鏈接進(jìn)入分類頁,觀察翻頁鏈接,發(fā)現(xiàn)翻頁鏈接中都含有:
http://category.dangdang.com/pg,使用地址過濾方法,過濾地址中含有:
http://category.dangdang.com/pg的鏈接。采集預(yù)覽如下圖所示:
4.抽取圖書商品數(shù)據(jù)①新建一個(gè)抽取模板,在其下新建一個(gè)數(shù)據(jù)抽取,具體操作如下所示:
②數(shù)據(jù)建表,按照下圖所示建數(shù)據(jù)表。(注意字段屬性等應(yīng)嚴(yán)格按照下圖進(jìn)行設(shè)置)
③將新建好的數(shù)據(jù)表,關(guān)聯(lián)到模板中去,如下圖所示:
④填寫示例數(shù)據(jù),采集預(yù)覽,復(fù)制任意一條圖書商品鏈接,
將鏈接粘貼到本模板示例地址中,并雙擊內(nèi)置瀏覽器空白部分,加載本鏈接。
⑤關(guān)聯(lián)模板
模板02中的列表鏈接抽取,關(guān)聯(lián)模板03,這樣采集到的圖書商品鏈接會(huì)到模板03進(jìn)行數(shù)據(jù)抽取。
模板02中的翻頁鏈接抽取,關(guān)聯(lián)模板02,這樣采集到的翻頁鏈接會(huì)繼續(xù)在模板02中進(jìn)行列表鏈接抽取。
⑥數(shù)據(jù)抽取-可視化抽取部分字段
Class1&class2使用字段定位取值的方法,進(jìn)行取值,具體操作如下所示:
Title取值同上
Introduct、Autho、publish、pubtime、price取值同上
⑦數(shù)據(jù)抽取—腳本抽取部分字段
Recommend后邊的字段對(duì)應(yīng)的數(shù)據(jù)不在頁面源碼中,所以用定位取值取不到。
接下來我們用瀏覽器打開該示例地址,查看recommend等字段對(duì)應(yīng)的數(shù)據(jù)在哪個(gè)請(qǐng)求中。
點(diǎn)擊F12,查看每個(gè)請(qǐng)求中返回的內(nèi)容,發(fā)現(xiàn)recommend等內(nèi)容在下圖所示請(qǐng)求中。
發(fā)現(xiàn)該請(qǐng)求的鏈接是:
http://product.dangdang.com/index.php?r=callback%2Fdetail&productId=29267036&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.06.23.00.00觀察發(fā)現(xiàn)其規(guī)律為:
http://product.dangdang.com/index.php?r=callback%2Fdetail&productId=+id+&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.20.00.00.00";
查看請(qǐng)求中的返回內(nèi)容,發(fā)現(xiàn)文本內(nèi)容都被Unicode轉(zhuǎn)譯。
使用在線轉(zhuǎn)碼工具能夠轉(zhuǎn)譯為中文。
在源碼中,發(fā)現(xiàn)id為【abstract-all】的內(nèi)容是編輯推薦(recommend字段)
同理,id為【content-all】的內(nèi)容是內(nèi)容簡(jiǎn)介(content字段)
id為【catalog-show-al】的內(nèi)容是目錄內(nèi)容(booklist字段)
故在recommend字段創(chuàng)建腳本教程如下所示:
腳本文本如下所示:
var id=URL.urlname.Middle(".com//",".html"); //從網(wǎng)址中拿到商品IDvar ur = "http://product.dangdang.com/index.php?r=callback%2Fdetail&productId="+id+"&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.20.00.00.00"; var doc = EXTRACT.OpenDoc(CHANN,ur); //通過第2行拼出的請(qǐng)求地址,打開請(qǐng)求(必須與CloseDoc成對(duì)使用)var str = doc.GetDom().GetSource().ToStr(); //取請(qǐng)求正文->取正文源碼->轉(zhuǎn)換成字符串類型 jScript js; //定義一個(gè)js變量,用于存儲(chǔ)json文件var json=js.RunJson(DOM.UnEscape(str,1)); //將已轉(zhuǎn)換成字符串的請(qǐng)求正文,轉(zhuǎn)換成json格式,并用UnEsCape()方法轉(zhuǎn)碼(從Unicode編碼轉(zhuǎn)化成GBK) var html = OpenDom(json.data.html,ur, false); //將json中包含著的HTML部分取出來,并轉(zhuǎn)變?yōu)镈OM樹結(jié)構(gòu)(必須與CloseDom成對(duì)使用)var recommend=html.GetTextAll(html.FindId("abstract-all").next); //從DOM樹中找到該字段的節(jié)點(diǎn),將內(nèi)容取出來 REC.content = html.GetTextAll(html.FindId("content-all").next); //由于當(dāng)前打開的請(qǐng)求正文中,也包含了其他字段,為了節(jié)約效率,定義一個(gè)當(dāng)前記錄集對(duì)象,將其他字段一并取出REC.author_info = html.GetTextAll(html.FindId("authorIntroduction-all").next); //同上REC.booklist = html.GetTextAll(html.FindId("catalog-show-all").next); //同上 CloseDom(html); //關(guān)閉一個(gè)由OpenDom打開的dom樹EXTRACT.CloseDoc(doc); //關(guān)閉打開的采集文檔return recommend;
⑦采集預(yù)覽,雙擊進(jìn)入下一層,知道打開數(shù)據(jù)頁,抽取到數(shù)據(jù),表示配置成功。
l 采集步驟模板配置完成,采集預(yù)覽沒有問題后,可以進(jìn)行數(shù)據(jù)采集。
①首先要建立采集數(shù)據(jù)表:
選擇【數(shù)據(jù)建表】,點(diǎn)擊【表單列表】中該模板的表單,在【關(guān)聯(lián)數(shù)據(jù)表】中選擇【創(chuàng)建】,表名稱自定義,這里命名為【dangdang】(注意命名不能用數(shù)字和特殊符號(hào)),點(diǎn)擊【確定】。創(chuàng)建完成,勾選數(shù)據(jù)表,并點(diǎn)擊右上角保存按鈕。
③選擇【數(shù)據(jù)采集】,勾選任務(wù)名稱,點(diǎn)擊【開始采集】,則正式開始采集。
④采集結(jié)束后,可以在【數(shù)據(jù)瀏覽】中,選擇數(shù)據(jù)表查看采集數(shù)據(jù),并可以導(dǎo)出數(shù)據(jù)。
⑤導(dǎo)出的文件打開如下圖所示:
l 前嗅簡(jiǎn)介前嗅大數(shù)據(jù),國內(nèi)領(lǐng)先的研發(fā)型大數(shù)據(jù)專家,多年來致力于為大數(shù)據(jù)技術(shù)的研究與開發(fā),自主研發(fā)了一整套從數(shù)據(jù)采集、分析、處理、管理到應(yīng)用、營銷的大數(shù)據(jù)產(chǎn)品。前嗅致力于打造國內(nèi)第一家深度大數(shù)據(jù)平臺(tái)!