亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于爬蟲技術(shù)的圖書購買推薦與比價策略研究

        2021-03-24 16:09:11盧江劉文正
        科技資訊 2021年1期

        盧江 劉文正

        摘? 要:在大數(shù)據(jù)背景下,大量數(shù)據(jù)的堆疊使人們在進行人工提取有效信息時,存在諸多不便。網(wǎng)絡(luò)爬蟲技術(shù)可以自動完成網(wǎng)絡(luò)信息的收集和分析,從而方便用戶獲得有效信息。該文以圖書購買推薦與比價策略的研究為重點,主要介紹了lxml庫與Python相關(guān)技術(shù),以及圖書比價的策略特點,為用戶提供更直觀的商品指標,同時存儲商品信息為后續(xù)的進一步優(yōu)化提供數(shù)據(jù)源。

        關(guān)鍵詞:爬蟲技術(shù)? lxml? Python? 比價策略

        中圖分類號:TP391.3???????????????????????? 文獻標識碼:A?????????????????? 文章編號:1672-3791(2021)01(a)-0214-06

        Research on the Strategy of Book Purchase Recommendation and Price Comparison Based on Crawler Technology

        LU Jiang? LIU Wenzheng*

        (Tianjin University of Commerce, Boustead College, Tianjin, 300384 China)

        Abstract: In the background of big data, the stacking of a large number of data makes it inconvenient for people to extract effective information manually. Web crawler technology can automatically complete the collection and analysis of network information so as to facilitate users to obtain effective information. This paper focuses on the research of book purchase recommendation and price comparison strategy, mainly introduces the lxml and python related technology, as well as the characteristics of book price comparison strategy in order to provide users with more intuitive commodity indicators, while storing commodity information to provide data sources for subsequent further optimization.

        Key Words: Crawler technology; Lxml; Python; Price comparison strategy

        隨著互聯(lián)網(wǎng)科技的飛速發(fā)展,在淘寶、京東、亞馬遜、當當網(wǎng)、中國圖書網(wǎng)等購物平臺上,由于圖書資源匯總不全面而導(dǎo)致消費者耗費大量的時間、精力在各大平臺自我進行性價比分析的問題也逐漸顯露。這些平臺對圖書的分析推薦有所欠缺,不夠全面從而導(dǎo)致消費者耗費大量時間、精力,尤其是學(xué)生黨和上班族對于這一塊的圖書高效選擇需求尤為突出。

        1? 爬蟲技術(shù)概述

        1.1 Python語言簡介

        Python是一種跨平臺的計算機編程語言,是一種具有高級解釋性、交互性、可編譯性和面向?qū)ο笮缘恼Z言。我們可以就像在讀英語一樣讀一個很好的Python代碼,它可以讓你找出解決問題的方法,而不是去解決語言本身。它最初被設(shè)計用于編寫自動腳本,隨著版本更新和新功能的加入,它越來越多地用于獨立、大型項目的開發(fā)。

        1.2 網(wǎng)絡(luò)爬蟲定義

        網(wǎng)絡(luò)爬蟲又被稱為網(wǎng)絡(luò)蜘蛛和網(wǎng)絡(luò)機器人,是一種能自動采集互聯(lián)網(wǎng)信息的程序或腳本。爬蟲的主要目的是從網(wǎng)絡(luò)上提取相關(guān)的信息保存在本地形成一個多維的數(shù)據(jù)庫用來做出更好的數(shù)據(jù)模型。

        1.3 工作原理

        (1)首先獲取初始URL。初始URL地址可以由用戶指定,也可以從幾個初始爬網(wǎng)頁人為地指定或確定。

        (2)根據(jù)初始URL抓取頁面來獲取新URL。獲取初始URL地址后,首先需要對相應(yīng)URL地址中的頁面進行爬取,爬取了相應(yīng)頁面之后,將頁面存儲在數(shù)據(jù)庫中,同時新的頁面進行爬取,然后查找新的URL地址,并在列表中存儲爬取到的URL地址,用于判斷是否爬取網(wǎng)頁重復(fù)并且確定爬取過程。

        (3)將新URL放入URL隊列中。

        (4)從URL隊列中讀取新URL,根據(jù)新URL對頁面進行爬取,從新網(wǎng)頁中獲取新URL,然后重復(fù)上述爬取過程。

        (5)滿足Python系統(tǒng)設(shè)定的停止條件時停止爬行。當寫Python代碼時,通常會設(shè)置停止條件。如果未設(shè)置停止條件,Python將不停地爬取網(wǎng)頁,直到新的URL地址無法獲取;如果設(shè)置了停止條件,則Pyhton將在滿足該條件時停止爬取。

        2? 技術(shù)實現(xiàn)

        2.1 技術(shù)路線

        技術(shù)實現(xiàn)的主要技術(shù)路線見圖1。

        2.2 基于lxml的信息爬取系統(tǒng)設(shè)計

        2.2.1 lxml概述

        lxml工具包用于libxml2和libxslt的Pythonic綁定。它的獨特之處在于它結(jié)合了各種所需庫的速度和XML功能完整性與本機PythonAPI的簡單性,但由于眾所周知的ElementTreeAPI的優(yōu)勢,因此lxml工具包被廣泛使用。lxml工具包的整體架構(gòu)情況見圖2。

        ml.etree是一個處理XML的很快的庫。但是在將強大的libxml2庫映射到簡單方便的ElementTree API時,需要注意一些問題。并非所有操作都像API建議的那樣快,而一些用例可以從找到正確的操作方法中獲益匪淺?;鶞薯撁媾c其他 ElementTree實現(xiàn)進行比較,并提供了許多性能調(diào)整提示。與任何Python應(yīng)用程序一樣,經(jīng)驗法則是:在C中運行的處理更快。另請參閱系統(tǒng)設(shè)計部分。

        2.2.2 Xpath概述

        Xpath是XML路徑語言,用于標識XML文檔中的特定位置。Xpath基于XML的樹形結(jié)構(gòu),并且提供樹形結(jié)構(gòu)數(shù)據(jù)中的定位節(jié)點的能力。同樣的,Xpath也支持HTML,因為Pyhton通常從HTML頁面中爬取,而HTML網(wǎng)頁與XML一樣,都是樹形狀結(jié)構(gòu)。Python的目的是獲取數(shù)據(jù),但是這些數(shù)據(jù)通常不是頁面的全部數(shù)據(jù),因此獲取指定的數(shù)據(jù)需要數(shù)據(jù)匹配。常見的匹配技術(shù)包括Python自己的正則表達式類庫(re),但正則匹配不能完全保證與指定的數(shù)據(jù)節(jié)點匹配,表達式的編寫也很復(fù)雜。Xpath語言簡化了匹配表達式的編寫,并且具有較高的成功率。Python語言能夠很好地支持Xpath,lxml和Xpath的組合使Python爬取更高效可靠。Xpath的解析原理見圖3。

        3? 技術(shù)特色與創(chuàng)新性

        在日常生活中,很多人因為不知道什么購物平臺有自己所需要的資料,就盲目下載或瀏覽各種軟件或網(wǎng)站。而該文設(shè)計的方案是可以直接根據(jù)用戶搜索的圖書,呈現(xiàn)最優(yōu)的圖書排名及對應(yīng)的平臺,此時用戶就可以針對性下載以及查找。

        同時可以直接呈現(xiàn)出性價比的結(jié)果,不用用戶一而再、再而三地去花時間進行對比分析。

        “基于爬蟲技術(shù)的圖書購買推薦與比價策略研究”進行了很好的圖書匯總處理,主要針對人群是學(xué)生黨和上班族,他們因為工作或?qū)W習(xí)的原因,沒有大量的時間耗費在查找學(xué)習(xí)資料上,為此很多人因為圖書沒有針對性導(dǎo)致事倍功半、勞心勞力也沒達到自己想要的預(yù)期效果。

        該文介紹了通過廣度優(yōu)先網(wǎng)絡(luò)爬蟲對淘寶、京東、中國圖書網(wǎng)等平臺上的圖書資源匯總分析,再到數(shù)據(jù)可視化的對比過程。主要通過用戶在搜索的時候,可以選擇輸入書名或者作者名,網(wǎng)頁就會呈現(xiàn)出經(jīng)過性價比分析后的最優(yōu)圖書。除此以外,我們會根據(jù)關(guān)鍵詞,推薦出評價最好、價格適中的圖書。更方便學(xué)生黨和上班族的學(xué)習(xí)需求,提高了買書的效率。

        4? 系統(tǒng)設(shè)計

        4.1 多線程的使用

        多線程類似于同時執(zhí)行多個不同程序,多線程可以把占據(jù)任務(wù)過程時間較長的程序放到后臺去處理,這樣可以加快處理一些正在等待的任務(wù),如用戶輸入輸出、文件的讀寫和網(wǎng)絡(luò)接受發(fā)送數(shù)據(jù)等。在一些等待的情況下我們可以釋放資源,如內(nèi)存占用等。在爬蟲設(shè)計中,如果使用單線程技術(shù),那么在進行巨大的爬取工作時,逐行執(zhí)行將會占用非常長的時間,但是當引用了多線程技術(shù),那就類似于同時運行了多個爬蟲程序?qū)W(wǎng)頁進行爬取,會極大地提升網(wǎng)頁的爬取速度。在該程序中我們使用了3個線程來運行,在測試過程中節(jié)省了很多時間。

        4.2 反爬蟲機制的機制分析

        在網(wǎng)絡(luò)請求中,User-Agent是客戶端表明身份的一種標識;在服務(wù)器中,可以判斷User-Agent是否為瀏覽器行為。當我們使用代碼進行爬蟲時,如果對方服務(wù)器中需要瀏覽器標識User-Agent時,但是在自己的代碼中沒有添加瀏覽器標識時,那么這段代碼的請求不會通過,并且將返回403錯誤碼。

        在許多購物網(wǎng)站中,為了防止爬蟲機器人在短時間內(nèi)進行大量網(wǎng)絡(luò)資源的訪問,所以在其網(wǎng)頁中,經(jīng)常都引用反爬蟲機制來禁止這種行為。在測試過程中,分別使用postman軟件和Microsoft Edge瀏覽器同時訪問相同的網(wǎng)頁,在postman中獲得的返回碼雖然是200,但是獲取的源代碼卻比Microsoft Edge瀏覽器中的代碼少了很多,說明這個網(wǎng)頁設(shè)置了反爬蟲機制。

        所以為了應(yīng)對反爬蟲機制,經(jīng)常設(shè)置一個header值來模擬瀏覽器行為,通常每個瀏覽器都有不同的代碼,在此舉幾個例子:谷歌chrome瀏覽器:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36;Microsoft Egde瀏覽器:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299。但是在個別網(wǎng)頁中,同一個瀏覽器、IP地址下短時間內(nèi)發(fā)送大量的數(shù)據(jù)也是會被禁止訪問,因此我們在此爬蟲中引用了fake-useragent庫,其包含了10種瀏覽器的識別代碼,在使用中,可以固定一種瀏覽器,也可以直接使用random參數(shù)。在爬取數(shù)據(jù)過程中,最重要的就是可以隨機使用頭文件,這樣將大大減少了被禁止訪問的風(fēng)險,同時減少了代碼量。

        4.3 lxml解析器的應(yīng)用

        (1)lxml。對于瀏覽器的爬取需要使用解析器來解析網(wǎng)頁,在爬蟲中,通常使用BeautifulSoup庫和lxml庫來解析網(wǎng)頁,因為BeautifulSoup需要加載整個網(wǎng)頁的文檔數(shù)來進行查詢匹配操作,所以會占用較多的資源,降低運行速度,而對于lxml庫,它同時支持HTML、XML和XPATH的解析,解析效率非常高,所以在此爬蟲中使用了lxml庫。

        (2)XPath。全名為全稱XML Path Language,或XML路徑語言,是一種查詢XML文檔中的信息的語言,最初用于搜索XML文檔,但它也適用于html類型的文檔搜索。XPath非常強大,它提供了一個非常簡潔的Web源路徑選擇表達式,此外,它還提供了100多個內(nèi)置函數(shù),用于數(shù)字、時間匹配、字符串和序列、節(jié)點處理等,幾乎所有我們想要定位的節(jié)點,都可以選擇XPath。

        爬蟲在該系統(tǒng)中處于主導(dǎo)地位,因此lxml庫在本系統(tǒng)中發(fā)揮了重要的作用,對于3個網(wǎng)址的解析都使用了lxml中Xpath方法進行路徑定位和分析。在網(wǎng)頁中使用開發(fā)者模式打開網(wǎng)頁元素界面,通過標識符可以定位到需要爬取內(nèi)容的位置,經(jīng)過對比可以發(fā)現(xiàn)代碼位置的相同之處,如圖4所示,可以確定在淘書團網(wǎng)站下搜索python關(guān)鍵字定位的第一本圖書。

        同時發(fā)現(xiàn)在搜索結(jié)果顯示中的結(jié)構(gòu)都是一樣的,所以可以直接使用代碼定位到其具體位置tree.xpath('//ul[@class="bigimg"]/li')下,并將其存儲在li_list中,并使用循環(huán)來遍歷所有

      1. 目錄,讀取其中的數(shù)據(jù)進行存儲。

        4.4 Requests的網(wǎng)絡(luò)請求方式

        Requests支持在python內(nèi)置模塊的基礎(chǔ)上進行了高度的封裝,從而使得python進行網(wǎng)絡(luò)請求時,變得人性化,使用Requests可以輕而易舉地完成瀏覽器可有的任何操作。

        Requests庫支持HTTP連接保持和連接池、支持使用cookie保持會話、支持文件上傳、支持自動響應(yīng)內(nèi)容的編碼、支持國際化的URL和POST數(shù)據(jù)自動編碼。并且在內(nèi)置模塊的基礎(chǔ)上進行了高度的封裝,使得python在進行網(wǎng)絡(luò)請求時,變得人性化,使Requests可以輕而易舉的使用代碼的方式完成瀏覽器的任何操作。Requests.get(url,header)語句打開使用header中的useragent方式打開一個網(wǎng)站的網(wǎng)址,并保持連接,直到數(shù)據(jù)處理完成。

        以淘書團網(wǎng)址http://www.bookschina.com/book_find2/default.aspx?stp=%s&p=%s為例,對于程序開始階段輸入的關(guān)鍵字和頁數(shù)分別由stp和p參數(shù)確定,在程序運行過程中使用中經(jīng)過多線程的處理,將頁碼傳入進來,進行自加一操作,即可實現(xiàn)自動翻頁行為。

        4.5 數(shù)據(jù)處理的方法

        Pandas是基于NumPy的一個開源庫,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。在Pandas中有兩種數(shù)據(jù)結(jié)構(gòu),即序列Series和數(shù)據(jù)框DataFrame。Series類似于Numpy中的一維數(shù)組,可通過索引標簽的方式獲取數(shù)據(jù),具備索引的自動對齊功能;DataFrame類似于Numpy中的二維數(shù)組,可以使用二維數(shù)組的函數(shù)和方法處理數(shù)據(jù)。Pandas是使Python成為強大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。

        在完成爬蟲功能將文件保存下來之后,使用pandas庫對數(shù)據(jù)進行處理。首先使用DataFrame()將“我愛淘書.csv”轉(zhuǎn)換為二維數(shù)組。在查看未處理文件時,發(fā)現(xiàn)爬取的數(shù)據(jù)中存在很多空行,所以使用lc.dropna(axis=0, how=‘a(chǎn)ny, inplace=True)代碼將空行刪除,axis表示刪除軸,即按行刪除或按列刪除,此時0表示的是按行刪除,how表示篩選方式,‘a(chǎn)ny,表示該行/列只要有一個以上的空值,就刪除該行/列,inplace表示是否直接在源文件中替換空行,true表示在源文件中進行操作而不生成新的文件。

        用戶在進行搜索圖書時,可以選擇輸入書名或者作者名,網(wǎng)頁就會呈現(xiàn)出經(jīng)過性價比分析后的最優(yōu)圖書。既然要進行比價操作,所以需要對爬取的文件進行升序排列,將價格最優(yōu)惠的圖書放在上面,為使用者提供簡單明了的閱讀。在這里使用sort_values(by="價格", ascending=True, inplace=True)語句,by定位要進行操作的列;ascending的值為True時代表升序排列,為False時代表降序排列,inplace參數(shù)同刪除空行一樣,代表是否直接替換源文件。由于爬取數(shù)據(jù)較大,因此只對部分數(shù)據(jù)進行展示,具體見圖5、圖6。

        5? 結(jié)語

        從獲得的數(shù)據(jù)來看,優(yōu)先顯示價格較低的圖書,同時顯示讀者比較關(guān)注的相關(guān)信息,如可以購買到的平臺名,近期折扣活動,購買鏈接,圖書簡介等,該系統(tǒng)通過lxml庫、XPath等技術(shù)實現(xiàn)了利用關(guān)鍵詞進行爬取資源的操作,對網(wǎng)絡(luò)上的圖書進行比價策略研究,具有一定的實用性。

        參考文獻

        [1]?苻玲美.正則表達式在python爬蟲中的應(yīng)用[J].電腦知識與技術(shù),2019,15(25):253-254.

        [2]?羅安然,林杉杉.基于Python的網(wǎng)頁數(shù)據(jù)爬蟲設(shè)計與數(shù)據(jù)整理[J].電子測試,2020(19):31,94-95.

        [3]?朱燕騰.Python的計算機軟件應(yīng)用技術(shù)分析[J].電腦編程技巧與維護,2020(9):10-11,16.

        [4]?趙文杰,古榮龍.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)[J].河北農(nóng)機,2020(8):65-66.

        [5]?曾燕清,陳志德,李翔宇.應(yīng)用樹結(jié)構(gòu)的Xpath自動提取算法[J].福建電腦,2020,36(7):34-38.

        [6]?劉新鵬,高斌.利用Python和Pandas進行學(xué)生成績處理[J].信息與電腦:理論版,2020,32(7):41-43.

        [7]?溫婭娜,袁梓梁,何詠宸,等.基于Python爬蟲技術(shù)的網(wǎng)頁解析與數(shù)據(jù)獲取研究[J].現(xiàn)代信息科技, 2020,4(1):12-13,16.

        [8]?李培.基于Python的網(wǎng)絡(luò)爬蟲與反爬蟲技術(shù)研究[J].計算機與數(shù)字工程,2019,47(6):1415-1420,1496.

        [9]?何春燕,王超宇.基于python+pandas的數(shù)據(jù)分析處理應(yīng)用[J].數(shù)碼世界,2018(7):386.

        [10]蔡光波.面向主題的多線程網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[D].西北民族大學(xué),2017.

        [11]王朝陽.基于Python的圖書信息系統(tǒng)的設(shè)計與實現(xiàn)[D].吉林大學(xué),2016.

        香港三级日本三韩级人妇久久| av香港经典三级级 在线 | 麻豆精品传媒一二三区| 欲妇荡岳丰满少妇岳| 91制服丝袜| 国产优质女主播在线观看| 男人天堂亚洲天堂av| 欧美怡春院一区二区三区| 九九久久99综合一区二区| 天堂sv在线最新版在线 | 无码一区二区三区人| 亚洲av一区二区网址| 男女18视频免费网站| 精品成在人线av无码免费看| 少妇无码太爽了不卡视频在线看| 99久久综合狠狠综合久久 | 国产不卡在线免费视频| 久久亚洲国产高清av一级 | 天天做天天摸天天爽天天爱| 野花社区www高清视频| 亚州精品无码久久aV字幕| 国产亚洲高清在线精品不卡| 亚洲av第一区国产精品| 成人丝袜激情一区二区| 又色又爽又黄又硬的视频免费观看| 男人的天堂av网站一区二区| 在线不卡av一区二区| 亚洲一区二区二区视频| 人妻体体内射精一区二区| 又黄又爽又色的视频| 国产精品国产三级国产AvkTV| a级三级三级三级在线视频| 国产成人综合日韩精品无码| 亚洲人成网站18禁止久久影院| 亚洲人妻无缓冲av不卡| 久久亚洲精品国产精品婷婷| 日日麻批免费高清视频| 午夜男女很黄的视频| 少妇三级欧美久久| 国产高清一区在线观看| 亚洲一区二区三区在线最新|