999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ScrapySharp的孔夫子舊書網的圖書價格信息抓取器的實現

2017-10-21 00:15:49李金峰郭冰李金隆
科技信息·中旬刊 2017年7期

李金峰 郭冰 李金隆

摘要:ScapySharp由于有一個瀏覽器包裝類和使用類似jQuery的Css選擇器和Linq語法,使得它使用簡單,更容易地被用以進行Html文檔解析。本文介紹了一種基于ScrapySharp的孔夫子舊書網的圖書價格信息抓取器及其實現的思路和關鍵技術。

關鍵詞:ScapySharp;孔夫子舊書網;圖書價格;信息抓取

一、引言

采集電商網的商品價格信息,對于網店賣家進行同類商品的定價決策有重要的參考意義。筆者使用ScrapySharp實現了對孔夫子舊書網上的圖書的價格信息進行抓取的軟件,該軟件功能可以用在電商系統后臺等軟件系統,為賣家的商品定價決策提供支持。

二、軟件功能描述

賣家在孔夫子舊書網上架舊書商品的時候,需要確定舊書商品的價格,而價格的確定又需要參考同行的圖書商品的定價。這種情況,一般的做法是通過圖書的ISBN號在孔夫子舊書網上搜索圖書的商品信息,然后查看各賣家對該書的定價,在參考同行定價的基礎上,確定本店的定價。通過ISBN號在孔夫子舊書網上查詢圖書價格信息的方法如圖1所示。這種查詢圖書定價信息的做法的最大缺點是,人力成本高,信息獲取的效率低。

為了節約人力成本,提高查詢網店圖書價格信息的效率,筆者實現了一種基于ScrapySharp的孔夫子舊書網價格信息抓取器,用戶只需要輸入圖書的ISBN號,就可以查找到孔夫子網上的該書的所有定價信息,并把定價信息顯示在用戶界面。

三、軟件功能的實現

1、軟件功能實現的思路

孔夫子舊書網的書籍價格信息抓取器的實現思路是,通過Url定位到圖書查詢的網頁,然后對網頁的內容進行抓取,最后從網頁內容中把圖書的價格信息提取出來。軟件功能實現的思路(價格信息獲取的流程)如圖2所示。

2、以ISBN查詢圖書信息的Url分析

以ISBN為“9787560544588”的圖書為例,該圖書的中文書名為:概率、變量與過程(第4版);英文書名為:Probability,Random Variables and Stochastic Processes.在孔夫子舊書網的商品搜索框中輸入“9787560544588”后,頁面呈現搜索結果——《概率、變量與過程(第4版)》的商品信息列表,如圖1所示。此時,瀏覽器地址欄中顯示的網址為:http://search.kongfz.com/product/zk39k37k38k37k35k36k30k35k34k34k35k38k38/。

再通過其它圖書的ISBN搜索實驗發現,搜索結果地址的結構分為三部分,第一部分為服務器(控制器)地址,即:http://search.kongfz.com/product/。第二部分為經過字符串混淆處理的ISBN號,即例子中的網址的“zk39k37k38k37k35k36k30k35k34k34k35k38k38”部分,該部分的結構為:“zk3”+ISBN號第1位+“k3”+ISBN號第2位++“k3”+ISBN號第3位+“k3”+ISBN號第4位+“k3”+ISBN號第5位+“k3”+ISBN號第6位+“k3”+ISBN號第7位+“k3”+ISBN號第8位++“k3”+ISBN號第9位+“k3”+ISBN號第10位+“k3”+ISBN號第11位+“k3”+ISBN號第12位+“k3”+ISBN號第13位。第三部分為搜索結果的分頁頁碼,由“w+數字”構成,數字1表示搜索結果的第一頁,2表示第二頁,以此類推。本例子中,網址可以寫成完整結構(包含服務器(控制器)地址、ISBN號信息和搜索結果分頁頁碼三部分)的網址,即:

http://search.kongfz.com/product/zk39k37k38k37k35k36k30k35k34k34k35k38k38w1/

通過實驗發現,當輸入的分頁頁碼數大于實際搜索結果的分頁頁碼時,返回的網頁中的title標簽中的內容為“搜索零結果”,即:

搜索零結果

據此,可以準確判斷搜索結果的分頁頁碼數。

3、ScrapySharp和Htlm文檔解析

通過網頁搜索實驗發現,圖書價格信息在Html文檔中的標簽節點為:

遍歷文檔中的class為“red”的p標簽可以獲取當前頁中的所有圖書價格信息。

ScrapySharp為.Net開發者解析Html文檔提供了極大的便利,主要優點有:ScapySharp有一個瀏覽器包裝類(處理Reference,Cookie等),此外,它使用類似jQuery的Css選擇器和Linq語法。通過ISBN號獲取孔夫子舊書網中的圖書價格信息的核心代碼如下:

public List GetKongfuziPriceByIsbn(string isbn)

{

try

{

//價格信息集合

List priceStrList = new List();

//搜索結果分頁

int page = 1;

//讀取所有分頁的html文檔信息

while(true)

{

//使用WebClient處理從web站點檢索的數據

WebClient client = new WebClient();

//獲取搜索內容為isbn(圖書ISBN號)的搜索結果網址

string address = GetSearchUrl(isbn);

//獲取流

Stream st = client.OpenRead(address + “w” + page);

//分頁頁碼加1

page++;

//創建StreamReader 對象

StreamReader sr = new StreamReader(st,Encoding.UTF8);

//獲取html文檔內容

string content = sr.ReadToEnd();

//創建HtmlDocument對象

var htmlDocument = new HtmlDocument();

//載入html文檔內容到HtmlDocument對象中

htmlDocument.LoadHtml(content);

//獲取html文檔的標簽節點

var html = htmlDocument.DocumentNode;

//如果輸入的分頁頁碼超出實際搜索結果的分頁頁碼的范偉,則退出循環

if(html.CssSelect(“title”).FirstOrDefault().InnerHtml.Equals(“搜索零結果”))

{

break;

}

//獲取class為red的p標簽節點(即價格信息標簽節點)

var prices = html.CssSelect(“p.red”);

//將價格信息保存到自定義的集合中

foreach(var htmlNode in prices)

{

priceStrList.Add(htmlNode.InnerHtml);

}

}

return priceStrList;

}

catch(Exception ex)

{

throw ex;

}

}

4、效果測試

在.Net控制臺項目中對上述代碼進行測試,測試實例為抓取ISBN號為“9787302423287”的圖書的價格信息。測試程序的代碼如下:

//實例化孔夫子圖書價格抓取輔助類的對象

KongfuziPriceHelper helper = new KongfuziPriceHelper();

//調用GetKongfuziPriceByIsbn方法抓取圖書的價格信息

List priceStrList = helper.GetKongfuziPriceByIsbn(“9787302423287”);

//價格記錄數

int count = 0;

//在控制臺中輸出所有價格

foreach(var item in priceStrList)

{

count++;

Console.WriteLine(item);

}

//在控制臺中輸出價格記錄數

Console.WriteLine(“總計:” + count + “條記錄”);

運行測試程序,控制臺輸出結果如圖3所示。

孔夫子舊書網上對ISBN號為“9787302423287”的圖書進行搜索的結果如圖4所示。

由于搜索結果的顯示頁面過長,只截取頁面局部,可以看到搜索結果的圖書記錄為78條,與測試結果一致。基于ScrapySharp的孔夫子舊書網的圖書價格信息抓取器實現了預期的功能。

四、總結

ScrapySharp使用簡單,使得.Net開發者更容易地解析Html文檔,靈活地采集網頁信息。應用此技術可以方便、高效地實現孔夫子舊書網的圖書價格信息抓取器。測試結果表明,該軟件的功能達到了預期效果。

參考文獻:

[1]于娟,劉強.主題網絡爬蟲研究綜述[J].計算機工程與科學,2015(02):231-237.

[2]孫立偉,何國輝,吳禮發.網絡爬蟲技術的研究[J].電腦知識與技術,2010(15):4112-4115.

[3]喬峰.基于模板化網絡爬蟲技術的Web網頁信息抽取[M].電子科技大學,2015.

[4]肖劍.垂直搜索中一種高效穩定的數據抓取方法的研究與實現[M].南京大學,2014.

主站蜘蛛池模板: 99re在线视频观看| 亚洲男人的天堂久久精品| 日韩欧美综合在线制服| 国产99欧美精品久久精品久久| 2021国产在线视频| 欧美日本不卡| 伦精品一区二区三区视频| 中文字幕久久亚洲一区| 亚洲精品少妇熟女| 欧美成人一级| 激情综合网址| 国产小视频a在线观看| 天天做天天爱夜夜爽毛片毛片| 久久成人国产精品免费软件 | 亚洲天堂网站在线| 午夜国产在线观看| 免费中文字幕一级毛片| 91精品专区国产盗摄| 午夜国产大片免费观看| 九九久久精品国产av片囯产区| 丁香婷婷综合激情| 国产一级特黄aa级特黄裸毛片| 国产区精品高清在线观看| 欧美日韩导航| 欧美日韩精品在线播放| 99re在线免费视频| 秋霞午夜国产精品成人片| 国产一区二区三区夜色| 欧美性猛交xxxx乱大交极品| 91精品啪在线观看国产| 国产日韩精品一区在线不卡| 久久不卡国产精品无码| 国产精品无码久久久久久| 亚洲免费毛片| 国产白浆在线观看| 麻豆国产原创视频在线播放| 欧美色丁香| 伊人91在线| 成人免费午间影院在线观看| 国产资源免费观看| 国产91透明丝袜美腿在线| 欧美特黄一免在线观看| 一区二区三区国产| 成人福利在线视频免费观看| 国产凹凸一区在线观看视频| 欧美一级大片在线观看| 青青青视频91在线 | 国产一级在线观看www色 | 91无码人妻精品一区| 国产内射一区亚洲| 日韩午夜伦| 亚洲国产91人成在线| 国产亚洲欧美日本一二三本道| 国产在线一二三区| 国产精品999在线| 99热这里只有精品免费国产| 亚洲无码精彩视频在线观看| 91网站国产| 亚洲成A人V欧美综合| 国产一级妓女av网站| 香蕉eeww99国产精选播放| 亚洲天堂在线免费| 国产香蕉一区二区在线网站| 最新日本中文字幕| 日韩av无码精品专区| 亚洲人成影院在线观看| h视频在线观看网站| 波多野结衣视频一区二区| 国产色爱av资源综合区| 亚洲欧美在线综合一区二区三区| 午夜不卡福利| 波多野结衣一区二区三区AV| 国产精品熟女亚洲AV麻豆| 妇女自拍偷自拍亚洲精品| 福利在线一区| 人人艹人人爽| 69视频国产| 亚洲啪啪网| 欧美激情综合| 免费人成视网站在线不卡| 亚洲全网成人资源在线观看| 国产在线观看91精品亚瑟|