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

基于ScrapySharp的孔夫子舊書網(wǎng)的圖書價(jià)格信息抓取器的實(shí)現(xiàn)

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

李金峰 郭冰 李金隆

摘要:ScapySharp由于有一個(gè)瀏覽器包裝類和使用類似jQuery的Css選擇器和Linq語(yǔ)法,使得它使用簡(jiǎn)單,更容易地被用以進(jìn)行Html文檔解析。本文介紹了一種基于ScrapySharp的孔夫子舊書網(wǎng)的圖書價(jià)格信息抓取器及其實(shí)現(xiàn)的思路和關(guān)鍵技術(shù)。

關(guān)鍵詞:ScapySharp;孔夫子舊書網(wǎng);圖書價(jià)格;信息抓取

一、引言

采集電商網(wǎng)的商品價(jià)格信息,對(duì)于網(wǎng)店賣家進(jìn)行同類商品的定價(jià)決策有重要的參考意義。筆者使用ScrapySharp實(shí)現(xiàn)了對(duì)孔夫子舊書網(wǎng)上的圖書的價(jià)格信息進(jìn)行抓取的軟件,該軟件功能可以用在電商系統(tǒng)后臺(tái)等軟件系統(tǒng),為賣家的商品定價(jià)決策提供支持。

二、軟件功能描述

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

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

三、軟件功能的實(shí)現(xiàn)

1、軟件功能實(shí)現(xiàn)的思路

孔夫子舊書網(wǎng)的書籍價(jià)格信息抓取器的實(shí)現(xiàn)思路是,通過(guò)Url定位到圖書查詢的網(wǎng)頁(yè),然后對(duì)網(wǎng)頁(yè)的內(nèi)容進(jìn)行抓取,最后從網(wǎng)頁(yè)內(nèi)容中把圖書的價(jià)格信息提取出來(lái)。軟件功能實(shí)現(xiàn)的思路(價(jià)格信息獲取的流程)如圖2所示。

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

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

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

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

通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)輸入的分頁(yè)頁(yè)碼數(shù)大于實(shí)際搜索結(jié)果的分頁(yè)頁(yè)碼時(shí),返回的網(wǎng)頁(yè)中的title標(biāo)簽中的內(nèi)容為“搜索零結(jié)果”,即:

搜索零結(jié)果

據(jù)此,可以準(zhǔn)確判斷搜索結(jié)果的分頁(yè)頁(yè)碼數(shù)。

3、ScrapySharp和Htlm文檔解析

通過(guò)網(wǎng)頁(yè)搜索實(shí)驗(yàn)發(fā)現(xiàn),圖書價(jià)格信息在Html文檔中的標(biāo)簽節(jié)點(diǎn)為:

遍歷文檔中的class為“red”的p標(biāo)簽可以獲取當(dāng)前頁(yè)中的所有圖書價(jià)格信息。

ScrapySharp為.Net開(kāi)發(fā)者解析Html文檔提供了極大的便利,主要優(yōu)點(diǎn)有:ScapySharp有一個(gè)瀏覽器包裝類(處理Reference,Cookie等),此外,它使用類似jQuery的Css選擇器和Linq語(yǔ)法。通過(guò)ISBN號(hào)獲取孔夫子舊書網(wǎng)中的圖書價(jià)格信息的核心代碼如下:

public List GetKongfuziPriceByIsbn(string isbn)

{

try

{

//價(jià)格信息集合

List priceStrList = new List();

//搜索結(jié)果分頁(yè)

int page = 1;

//讀取所有分頁(yè)的html文檔信息

while(true)

{

//使用WebClient處理從web站點(diǎn)檢索的數(shù)據(jù)

WebClient client = new WebClient();

//獲取搜索內(nèi)容為isbn(圖書ISBN號(hào))的搜索結(jié)果網(wǎng)址

string address = GetSearchUrl(isbn);

//獲取流

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

//分頁(yè)頁(yè)碼加1

page++;

//創(chuàng)建StreamReader 對(duì)象

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

//獲取html文檔內(nèi)容

string content = sr.ReadToEnd();

//創(chuàng)建HtmlDocument對(duì)象

var htmlDocument = new HtmlDocument();

//載入html文檔內(nèi)容到HtmlDocument對(duì)象中

htmlDocument.LoadHtml(content);

//獲取html文檔的標(biāo)簽節(jié)點(diǎn)

var html = htmlDocument.DocumentNode;

//如果輸入的分頁(yè)頁(yè)碼超出實(shí)際搜索結(jié)果的分頁(yè)頁(yè)碼的范偉,則退出循環(huán)

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

{

break;

}

//獲取class為red的p標(biāo)簽節(jié)點(diǎn)(即價(jià)格信息標(biāo)簽節(jié)點(diǎn))

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

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

foreach(var htmlNode in prices)

{

priceStrList.Add(htmlNode.InnerHtml);

}

}

return priceStrList;

}

catch(Exception ex)

{

throw ex;

}

}

4、效果測(cè)試

在.Net控制臺(tái)項(xiàng)目中對(duì)上述代碼進(jìn)行測(cè)試,測(cè)試實(shí)例為抓取ISBN號(hào)為“9787302423287”的圖書的價(jià)格信息。測(cè)試程序的代碼如下:

//實(shí)例化孔夫子圖書價(jià)格抓取輔助類的對(duì)象

KongfuziPriceHelper helper = new KongfuziPriceHelper();

//調(diào)用GetKongfuziPriceByIsbn方法抓取圖書的價(jià)格信息

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

//價(jià)格記錄數(shù)

int count = 0;

//在控制臺(tái)中輸出所有價(jià)格

foreach(var item in priceStrList)

{

count++;

Console.WriteLine(item);

}

//在控制臺(tái)中輸出價(jià)格記錄數(shù)

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

運(yùn)行測(cè)試程序,控制臺(tái)輸出結(jié)果如圖3所示。

孔夫子舊書網(wǎng)上對(duì)ISBN號(hào)為“9787302423287”的圖書進(jìn)行搜索的結(jié)果如圖4所示。

由于搜索結(jié)果的顯示頁(yè)面過(guò)長(zhǎng),只截取頁(yè)面局部,可以看到搜索結(jié)果的圖書記錄為78條,與測(cè)試結(jié)果一致?;赟crapySharp的孔夫子舊書網(wǎng)的圖書價(jià)格信息抓取器實(shí)現(xiàn)了預(yù)期的功能。

四、總結(jié)

ScrapySharp使用簡(jiǎn)單,使得.Net開(kāi)發(fā)者更容易地解析Html文檔,靈活地采集網(wǎng)頁(yè)信息。應(yīng)用此技術(shù)可以方便、高效地實(shí)現(xiàn)孔夫子舊書網(wǎng)的圖書價(jià)格信息抓取器。測(cè)試結(jié)果表明,該軟件的功能達(dá)到了預(yù)期效果。

參考文獻(xiàn):

[1]于娟,劉強(qiáng).主題網(wǎng)絡(luò)爬蟲(chóng)研究綜述[J].計(jì)算機(jī)工程與科學(xué),2015(02):231-237.

[2]孫立偉,何國(guó)輝,吳禮發(fā).網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的研究[J].電腦知識(shí)與技術(shù),2010(15):4112-4115.

[3]喬峰.基于模板化網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的Web網(wǎng)頁(yè)信息抽取[M].電子科技大學(xué),2015.

[4]肖劍.垂直搜索中一種高效穩(wěn)定的數(shù)據(jù)抓取方法的研究與實(shí)現(xiàn)[M].南京大學(xué),2014.

主站蜘蛛池模板: 日韩无码黄色| 伊人AV天堂| 中国一级特黄视频| 国产精品毛片一区视频播| 青青青国产视频手机| 中文字幕有乳无码| 国产日韩丝袜一二三区| 国产交换配偶在线视频| 精品久久人人爽人人玩人人妻| 亚洲成人精品在线| 久久无码免费束人妻| 国产一级视频久久| 久久中文字幕2021精品| 国产色婷婷视频在线观看| 国产国语一级毛片| a在线亚洲男人的天堂试看| 久久综合AV免费观看| 好紧好深好大乳无码中文字幕| 不卡无码网| 欧美成人免费午夜全| 日韩福利在线视频| www精品久久| 性欧美在线| 国产成人亚洲日韩欧美电影| 天堂成人在线| 久久黄色免费电影| 一级看片免费视频| 免费一级全黄少妇性色生活片| 91啪在线| 国产日韩精品欧美一区灰| 国产真实乱人视频| 欧美综合区自拍亚洲综合天堂| 波多野结衣在线一区二区| 欧美成人一区午夜福利在线| 呦女亚洲一区精品| 国产午夜精品鲁丝片| 亚洲午夜18| 亚州AV秘 一区二区三区| 国产一二三区在线| 91精选国产大片| 欧美 国产 人人视频| 国产丝袜第一页| 亚洲欧美日韩综合二区三区| 国产福利一区二区在线观看| 99久久亚洲精品影院| 亚洲欧美成人在线视频| 中国特黄美女一级视频| 伊人精品视频免费在线| 国产成年无码AⅤ片在线| 国产乱子伦手机在线| 狼友av永久网站免费观看| 999在线免费视频| 国产精品亚洲一区二区三区z| 国产69囗曝护士吞精在线视频 | 精品国产欧美精品v| 久996视频精品免费观看| 亚洲无码电影| 91精品国产综合久久香蕉922| 97精品国产高清久久久久蜜芽| 国产尤物在线播放| 国产精品永久在线| 国内精品小视频福利网址| 免费在线观看av| 无码内射在线| 丁香亚洲综合五月天婷婷| 国产精品自在在线午夜区app| 黄色网页在线播放| 亚洲首页在线观看| 欧美自慰一级看片免费| 无码精品一区二区久久久| 亚洲国产成人超福利久久精品| 中文字幕亚洲乱码熟女1区2区| 精品久久综合1区2区3区激情| 国产第一页屁屁影院| 久久影院一区二区h| 综合亚洲色图| 91娇喘视频| 亚洲一区二区三区麻豆| 一级爆乳无码av| 国产高清在线观看91精品| 精品视频福利| 欧美日韩在线成人|