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

基于Python的圖書網爬蟲設計與實現

2021-11-28 12:20:30孫澤龍
電子制作 2021年20期
關鍵詞:進程頁面信息

孫澤龍

(西安職業技術學院,陜西西安,710077)

1 圖書網爬蟲的特點

由于現在絕大多數圖書網站都是基于一定的模板開發的,使用相關的模板,可以快速完成相同版式且不同內容的大量頁面,通過這個規律只要把相同的內容都獲取下來,求同存異地獲取實現大量頁面的目的[1]。

Python實現網絡爬蟲需要手動安裝第三方庫。Python爬蟲需要HTTP請求,它可以理解為是從客戶端到服務器端的請求消息。即就是說,無論是真正的一個人在操作瀏覽器還是一個爬蟲,當希望從服務器請求信息或服務時,首先就需要向服務器端發出一個請求,進而服務器會返回相應響應,最后連接關閉,Web服務的流程就是這樣完成的。本文用到的庫函數包含requests庫,使用requests庫調用get()和set()兩種提交方法獲取圖書網站源碼,如果網址需要提交的內容是JSON格式,要進行調用修改post()方法的一些參數。編碼格式用很多種,通過相關圖書網站編碼的測試,大多數情況下使用”utf-8”可以進行中文正常顯示。單網絡爬蟲是只有一個線程和進程,每次爬取訪問一個頁面,為了提高爬取效率和充分使用計算機網絡帶寬,一次同時讓爬蟲訪問多個頁面的目的,將使用多進程技術,通過調用multiprocessing多進程庫,處理多進程的相關操作。因為爬蟲屬于讀寫操作密集型的事情,當我們訪問請求網頁相關源碼時,多線程省去了大量等待返回網頁的時間[2]。當然,對于訪問數量達到一定數量級時,多線程需要通過異步操作來保持自身爬蟲運行的效率。

查看圖書網的網頁源碼后可以看出,它是一種結構化的數據,通過分析網頁結構信息,Python的第三方庫BeautifulSoup4,可以用來提取HTML和XML頁面結構內容,一般需要處理解析源代碼從而生成BeautifulSoup對象,找到包含特殊屬性的標簽,使用find()方法完成查找內容。Python對文本文件操作中,可以導入CSV模塊完成對CSV文件的讀取,而且CSV文件用Excel應用打開時可讀性高[3]。

解析器重要的功能是完成過濾選取網絡信息的作用。選取解析器的優劣直接決定了網絡爬蟲的執行速度和效率。Beautiful Soup不僅支持Python標準庫中的HTML解析器外,還支持一些第三方如lxml HTML、lxml XML、html5lib的解析器。Beautiful Soup的解析器對比如表1所示,列出了其目前主要的解析器,以及它們各自的優缺點。

表1 BeautifulSoup解析器對比

2 圖書網爬蟲應用實例

本文以圖書網為案例來說明,爬取目標內容為圖書的名稱、價格及對應圖書預覽圖的鏈接,爬取目標網站鏈接:http://tuan.bookschina.com/。獲取圖書網頁面信息要用到相關的類庫,打開網站看到的頁面信息是動態加載的。嘗試考慮先抓取圖書信息的第一頁開始,我使用的是chrome瀏覽器,并設置開發模式,可以查看相關頁面的相應加載信息,我們需要通過查看header信息,完成實現模擬登陸實現的功能。

對爬取圖書網目標的定義和描述。在聚焦圖書網絡爬蟲中,首先我們要依據爬取圖書網需求定義,并聚焦圖書網絡爬蟲的爬取目標,以及進行對應相關的描述。獲取初始的URL。根據初始的URL爬取頁面,并獲得新的URL。從新的URL中過濾掉與爬取目標無關的鏈接。因為聚焦網絡爬蟲對網頁的爬取是有目的性的,所以與目標無關的網頁將會被過濾掉。同時,也需要將已爬取的URL地址存放到一個URL列表中,用于去重和判斷爬取的進程。將過濾后的鏈接放到URL隊列中。從URL隊列中,根據搜索算法,確定URL的優先級,并確定下一步要爬取的URL地址。網絡爬蟲的實現原理以及相應的工作原理如圖1所示。

圖1 圖書網爬蟲運行原理

在通用網絡爬蟲中,下一步爬取哪些URL地址,是不太重要的,但是在聚焦網絡爬蟲中,由于其具有目的性,故而下一步爬取哪些URL地址相對來說是比較重要的。對于聚焦網絡爬蟲來說,不同的爬取順序,可能導致爬蟲的執行效率不同,所以,我們需要依據搜索策略來確定下一步需要爬取哪些URL地址。從下一步要爬取的URL地址中,讀取新的URL,然后依據新的URL地址爬取網頁,并重復上述爬取過程。滿足系統中設置的停止條件時,或無法獲取新的URL地址時,停止爬行。

通過分析分析整個圖書網的DOM,可以查看所需要的信息都封裝在哪些tags的里面,經過遍歷搜索后,發現到所需要的信息其實都封裝在

    的子節點li里面,這樣我們通過調用BeautifulSoup的庫函數解析抓取功能,爬蟲使用requests模塊發送帶header的請求來模仿瀏覽器登錄,通過循環遍歷后打印返回對象為數組,get方法完成tab內部的屬性值的獲取,從而實現拿到li內的我們需要的信息。

    可以通過調用requests里get方法,獲得到了響應的response,然后通過BS進行解析,在class 名為taoListInner的div標簽中,封裝了我們需要的ul下的li,查看了beautifulsoup調用select方法拿到對應的標簽,然后拿到對應h2標簽下的書名[4]。salePrice class下的價格;以及img標簽內src的預覽圖鏈接。這樣就可以得到出我們需要的第一頁所顯示的書籍的信息了。要想獲取頁面的更多書籍信息,由于bs的select方法是只能解析靜態的Dom的,因此更多的圖書數據是通過Ajax或者JS加載的,查看開發者模式的XHR里面的內容后發現,當下拉滾動條并得到最新圖書信息的時候,會繼續刷新出一個對應的鏈接,打開并查看Preview里面,封裝了我們需要的數據,并且是以Json形式進行保存的,這樣便能使我們方便地拿到動態生成的圖書數據了。想要拿到我們需要的Json數據,首先需要去獲得相應的Request URL。

    當每次有新的書籍信息刷新一次的時候,生成的GroupList?...URL中的Page=?跟隨著也會不斷遞增,因此需要去通過遍歷URL并拿到返回的JSON進行解析,這樣就可以得到我們想要的所有數據了,當遇到許多動態加載的網站,都會把以Json數據封裝作為response,爬蟲通過調用loads()方法,把返回的json數據轉換為python的字典,方便拿數據拿到數據后我們決定把數據存入磁盤,生成cvs的excel文件,寫入到相關的文件中,為了讓獲得的信息做進一步的數據分析。

    要實現整個過程中并發訪問程序,需要編寫并發訪問程序實現多線程同步。通過爬蟲程序會先去獲得網站的url,然后對url內的json數據進行處理,之后寫入文件,所以在整個過程中,我們可以分別讓多個進程去獲得url中response的數據,然后進行分批地處理,寫入文件中,在python中,每個進程都有一個互斥鎖,可以保證同一時間內只能有一個線程運行,通過找到遍歷url的方法,然后把方法體進一步地封裝到scraping_page_data()方法里,并創建線程池。

    進行調用join方法后,子進程會在主進程結束后不再繼續執行。主進程會去等待其他的進程,在進程池中使用apply方法去實現每個子進程,要執行apply(method_name, (parameters....))的方法。由于我們想要確保每次獲得一條url,當前進程寫入的數據的時候,不被其他進程打擾,使用給寫入操作加上進程鎖后,在寫的過程中可以知道,如果按照創建一條進程的方法也創建進程鎖,會報錯,原因是用了進程池,而進程池中的進程并不是由當前同一個父進程創建的原因[5]。multiprocessing.Manager()返回的manager對象控制了一個server進程,可用于多進程之間的安全通信。

    3 圖書網數據分析應用

    Python擁有很強大的關于科學計算庫,如Numpy庫在數值計算領域中可以用來存儲和處理大型矩陣,矩陣運算、矢量處理、精密運算等數值編程。SymPy庫用于數學符號的計算庫,如數學中常用的自然數E、圓周率pi、虛數i等進行數學公式的符號演算推導及證明。Matplotlib庫可以把基于科學的數據可視化展示,生成如曲線、直方圖、2D、3D等根據需要的各種圖形,它是Python面向對象著名的繪圖庫,提供了許多方便調用的API命令。

    Python擴充程序庫中Matplotlib庫可以完成2D繪圖庫,這使得通過編程可以形象直觀完成圖形圖表的繪制,使用Matplotlib類庫對于數據圖形化處理生成柱狀圖,通過執行寫入操作獲得數據后,需要讀取cvs中的price,分析價格低于100元的圖書的價位分布,可以引入matplotlib包來生成統計圖如圖2所示。

    圖2 圖書價位統計圖

    4 結語

    伴隨著互聯網技術的不斷發展,大量的公共信息更容易獲得,使用爬蟲技術將作為獲取這些信息的載體工具。面對第四次工業革命的發展,人工智能與物聯網將引領IT技術走向新的應用,Python網絡爬蟲作為科技浪潮領域數據應用的技術。大數據時代對數據分析與數據挖掘有著廣泛需求,利用Pyhton爬蟲使用的第三方庫函數就能實現數值分析的應用優勢,因此越來越多的程序員和科研人員也開始使用Pyhton爬蟲技術完成輔助數據分析工作,日常生活中人們使用智能手機和各種智能設備每天都會產生海量的數據,相信不遠的未來,隨著物聯網的普及,大量的智能終端設備產生的數據一定會成幾何級數的增長,因為面臨數據采集的規模將是空前的。今后很好的處理這些數據,可以為各種公司篩選需要發送定制服務的精準客戶。高職院校軟件相關專業也涉及相關課程內容,幫助學生探索培養人工智能時代的編程思維。

    本文是基于python爬蟲技術實現圖書網相關數據爬取,圖書價格可視化的應用。使用第三方庫實現圖書頁面信息獲取,并利用統計分析方法庫函數,進行了提取圖書信息價格的柱狀圖繪制,這個數據的可視化展示利用分析過程的展示,今后教學實踐將繼續以Python網絡爬蟲為載體,“新工科”建設為指導,設計和挖掘更多基于Pyhton網絡爬蟲的應用案例,提升教育教學水平和激發學生學習興趣。

    猜你喜歡
    進程頁面信息
    大狗熊在睡覺
    刷新生活的頁面
    保健醫苑(2022年1期)2022-08-30 08:39:14
    債券市場對外開放的進程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    訂閱信息
    中華手工(2017年2期)2017-06-06 23:00:31
    展會信息
    中外會展(2014年4期)2014-11-27 07:46:46
    社會進程中的新聞學探尋
    民主與科學(2014年3期)2014-02-28 11:23:03
    我國高等教育改革進程與反思
    教育與職業(2014年7期)2014-01-21 02:35:04
    Linux僵死進程的產生與避免
    同一Word文檔 縱橫頁面并存
    淺析ASP.NET頁面導航技術
主站蜘蛛池模板: 在线国产毛片| 波多野结衣无码视频在线观看| 免费观看成人久久网免费观看| 91人人妻人人做人人爽男同| 欧美视频二区| 91精品国产无线乱码在线| 国产综合色在线视频播放线视 | 欧洲日本亚洲中文字幕| 人妻精品全国免费视频| 久久综合国产乱子免费| 日韩精品亚洲精品第一页| 国产电话自拍伊人| 日韩一区二区三免费高清| 免费无码AV片在线观看国产| 亚洲色精品国产一区二区三区| 欧美伦理一区| 国产麻豆永久视频| 国产鲁鲁视频在线观看| 在线另类稀缺国产呦| 久久亚洲国产最新网站| 免费va国产在线观看| a欧美在线| 国产永久在线观看| 亚洲免费三区| 欧美精品综合视频一区二区| 欧美午夜视频| 久热中文字幕在线| 久久夜色精品国产嚕嚕亚洲av| 日韩精品免费一线在线观看| аv天堂最新中文在线| 欧美日韩国产精品综合| 亚洲69视频| 中文字幕亚洲综久久2021| 欧美中文字幕在线二区| 国产亚洲视频在线观看| 99热精品久久| 91破解版在线亚洲| 亚洲成人高清在线观看| 99久久人妻精品免费二区| 在线观看亚洲精品福利片| 97国产在线播放| 国内丰满少妇猛烈精品播| 国内精品自在自线视频香蕉| 一区二区影院| 亚洲综合第一区| 国产精品lululu在线观看| 国产成人精品午夜视频'| 欧美色视频网站| 国产99视频免费精品是看6| 91黄色在线观看| 不卡的在线视频免费观看| 麻豆精选在线| 国产在线观看精品| 久久青草免费91观看| 国产a v无码专区亚洲av| 日本人妻一区二区三区不卡影院| 欧美一级高清视频在线播放| 亚洲无线视频| 成人午夜精品一级毛片| 婷婷激情五月网| 中文字幕亚洲另类天堂| 91网在线| 久久国产精品77777| 婷婷六月色| 一区二区三区四区在线| 毛片网站观看| 亚洲国产高清精品线久久| 欧洲日本亚洲中文字幕| 欧美亚洲一区二区三区导航| 996免费视频国产在线播放| 就去色综合| 国产乱子伦视频在线播放| 日本免费精品| 五月天婷婷网亚洲综合在线| 国产网友愉拍精品视频| 亚洲无码不卡网| 亚洲高清资源| 日韩精品一区二区三区swag| 精品无码一区二区三区电影| 极品私人尤物在线精品首页 | www.精品视频| 在线无码私拍|