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

基于Python 的聚焦網絡爬蟲的設計與實現

2023-08-02 07:08:38唐文軍隆承志
計算機與數字工程 2023年4期
關鍵詞:信息

唐文軍 隆承志

(1.華南理工大學信息網絡工程研究中心 廣州 510640)

(2.華南理工大學計算機科學與工程學院 廣州 510640)

1 引言

在信息化、全球化的今天,電子政務極大地優化政府的組織結構、業務流程以及工作方式[1]。其中,電子政務以門戶網站為窗口,向社會公眾透明地開放政府的政務信息和政務服務[2]。門戶網站將各種應用系統、信息集成在一起,具有網頁結構復雜、內容形式多樣、以主題進行內容歸類的特征[3~4]。隨著時間的推移,門戶網站中相同主題下的信息量不斷累積,給公眾快速準確地檢索信息帶來困難。

聚焦網絡爬蟲是基于預先定義的主題進行網絡爬取的程序或者腳本[5~6]。相對于通用爬蟲,聚焦網絡爬蟲具有爬取目標明確,爬取速度快、爬取內容精度高等優勢,非常適合門戶網站主題信息的搜索[7]。爬蟲程序的實現一般采用腳本語言,Python 語言具有語法簡單、可讀性強等特征,因而常被用于編寫腳本[8~9]。本文基于Python 語言的爬蟲技術,以門戶網站主題信息的檢索為研究對象,設計和實現一個通用的聚焦網絡爬蟲,快速、精準地檢索門戶網站內的主題信息。

2 Python網絡爬蟲技術

Python 語言是一種跨平臺的解釋型語言,擁有豐富的本地庫和第三方庫支持網絡爬蟲的實現,其中包括Urllib、Request、re、Beautiful soup 等優秀的庫[10~12],根據庫提供的功能可以分成三類。

2.1 網頁爬取庫

Urllib 庫是Python 語言內置的庫[13],主要由url請求模塊、url 解析模塊、異常處理模塊以及Robots協議解析模塊組成。其中,urllib.request 通過模擬瀏覽器向網頁發送請求,等待網頁的應答,并獲取網頁返回的數據(比如:html、xml 格式文件);urllib.parse 則負責解析請求網頁返回的數據,提取其中有用的數據;urllib.error 處理網頁請求過程中出現的網絡故障。

Request庫是基于Urllib庫的第三方庫[14],支持get、post、put、delete、head、options 等6 種請求方法,其中,需要設置請求函數的headers 參數模擬瀏覽器發送網頁請求。request.exception 捕捉網絡通訊過程中可能發生的所有網絡故障信息,從而增強爬蟲的健壯性;Request 庫除了兼容Urllib 庫支持的html5.0、html、xml 格式的數據解析之外,request.json實現對json格式的數據解析。因此,相對Urllib庫,Request庫更具有易用性、可理解性和程序的健壯性。

2.2 網頁解析庫

Beautiful soup 是網頁解析的一個比較優秀的Python 第三方庫[15~16],支持不同的文件解析器。Beautiful soup庫將html文件和xml文件轉換成樹型結構,樹的每一個樹枝節點是一個對象,分類為tag對象、string 對象、Beautiful soup 對象和comment 對象。其中tag 對象是html 里的標簽,通過瀏覽器內嵌的開發工具獲取標簽在html內的爬取路徑,以爬取路徑為參數創建selecter對象并爬取網頁文件內的tag 對象,tag 對象包括了該標簽的所有屬性,比如:標簽的名稱、標簽值等,其中標簽值是需要被提取的數據。

2.3 數據處理庫

正則表達式(Regular Expression,RE)是處理文本匹配的常用庫[17~18]。正則表達式的組成部分包括普通字符、通用字符、非打印字符,基于邏輯組合可以表達復雜的正則語義。通常情況下,網絡爬蟲爬取的數據需要進行數據去噪處理,正則表達式通過組合有規律的字符串對爬取的原始數據進行匹配、替換、提取等數據清洗操作,從而提取有用的數據。由于正則表達式的代碼執行效率高,以及靈活的正則語義表達,RE是數據處理的關鍵技術。

3 聚焦網絡爬蟲的設計

互聯網是由相互鏈接的網站和網頁組成,網絡爬蟲的爬取策略決定著爬取數據的流程。聚焦網絡爬蟲的爬取數據明確、爬取網頁范圍小,因此常采用廣度優先爬取策略。廣度優先爬取策略是從一個種子頁面出發,在種子網頁發現第一層的網絡鏈接,先從第一層的網頁鏈表開始,爬遍第一層的所有網頁鏈接,然后再沿著網絡向前爬取下一層的網頁鏈接,網頁爬取順序為:O->A->B->C->D->E->F,如圖1所示。

圖1 廣度爬行策略

3.1 爬取數據流程

網絡爬蟲涉及爬取的數據和網頁,在明確數據內容和網頁范圍后,首先要分析網頁的文件格式(比如:html5.0 文件、html 文件、xml 文件、json 文件)、數據在網頁內的組織結構和表達形式,然后確定數據的爬取方式和爬取路徑。基于廣度爬行策略的聚焦網絡爬蟲的爬取數據流程如下。

設置入口的種子頁面Url 以及數據爬取規則,網頁爬取器向種子網頁發送請求并等待網頁返回處理后的數據文件;網頁解析器則解析返回的網頁文件,根據標簽對象的搜索路徑提取數據;數據處理器將提取的數據進行去噪處理,如果獲得下一層網絡鏈接Pageurl,則將Pageurl傳遞給網頁爬取器;網頁爬取器繼續對下一層網絡進行數據爬取,如此循序地進行網頁爬取,直到滿足停止爬取的條件才終止網頁爬取。爬取數據流程圖如圖2所示。

圖2 爬取數據流程圖

3.2 爬蟲的結構模型

聚焦網絡爬蟲按照預定的主題爬取特定網頁的數據,解析網頁數據并進行清洗處理,最終將提取的有用信息存儲在本地文件或者數據庫內。結合上述的爬取數據流程圖,爬蟲主要由調度器、網頁爬取器、網頁解析器、數據處理器以及數據存儲器組成[19~20],結構模型圖如圖3所示。

圖3 爬蟲結構模型圖

1)調度器。包含main 函數的模塊。首先,調度器初始化網頁爬取器的種子頁面Url以及網頁爬取規則,然后啟動網頁爬取器。

2)網頁爬取器。該模塊管理爬取網頁Url 列表,遍歷列表內的每一個網頁Url元素,將數據爬取規則轉換成網頁Url 后的請求參數;然后,利用Request 庫向網頁發送請求,等待網頁的響應并獲取返回的網頁文件。

3)網頁解析器。模塊調用Beautiful soup 庫和各類型的文件解析器實現,首先設置Beautifulsoup構造函數的兩個參數,即網頁爬取器獲取的網頁數據文件和該網頁文件格式相應的文件解析器,然后創建一個Beautifulsoup對象soup,soup對象的select函數根據網頁內數據的爬取路徑提取相應數據。

4)數據處理器。網頁解析器獲取的網頁數據往往不能滿足數據的需求,數據內包含太多的無效數據,需要對數據進行清洗處理。模塊采用re定義正則表達式匹配數據并進行字符替換,最后提取正確的數據。

5)數據存儲器。數據處理器提取的數據需要存儲到本地硬盤或數據庫,以支持后期的數據檢索和分析。數據存儲包括文件存儲和數據庫存儲兩種方式,通過調用Python提供的相應庫將內存里的數據轉換成統一格式存儲到本地文件(如:excel 文件)或數據庫中(如:MySQL數據庫)。

4 招標網站爬蟲案例的實現

4.1 招標網站爬蟲的需求

某省政府采購網是面向某省的招標采購信息平臺。該平臺提供信息發布門戶,采購人在門戶內發布采購意向、采購計劃、采購需求以及采購公告等信息,供應商則通過門戶檢索該省內的采購需求,獲得潛在的商業機會。某供應商的核心業務是為高等教育學校的信息化建設提供解決方案,銷售部門訪問門戶內的“項目采購公告”欄目獲取某省高校發布的信息化建設需求和計劃。以該供應商的需求為案例,以某省政府采購網為爬取對象,爬取所有學校發布的信息化建設的招標信息。

4.2 招標網站數據分析

使用chrome 瀏覽器打開“項目采購公告”主頁(https://gdgpo.czt.gd.gov.cn/cms-gd/site/guangdong/xmcggg/index.html),主頁的布局分成兩塊,即信息檢索條件輸入塊和公告信息列表的信息塊,如圖4所示。

圖4 “項目采購公告”主頁

啟動chrome 瀏覽器內嵌的“開發者工具”,然后輸入“公告類型”、“發布時間”、“驗證碼”等檢索條件,點擊“提交”按鈕后,在network內發現輸入的檢索條件以“&key=value”的形式作為參數添加在網頁url 后,瀏覽器向組合后的網頁url 發送請求,網站接收瀏覽器的請求后將處理后的結果以json格式文件放回給客戶端。json 文件內包含網絡處理結果狀態(status)、檢索的公告記錄總條數(total)、公告內容列表(data),其中公告內容包括公告標題(title)、公告詳細內容網頁鏈接url(pageurl)、公告發布時間(noticeTime)。點擊公告的詳細信息鏈接地址,服務器返回html 文件,右擊頁面內的公告信息,選擇“檢查”,進入瀏覽器的源代碼調試窗口,獲得該公告信息在html頁面內的“selecter”的檢索路徑,比如:“公告標題”的selecter的檢索路徑是“#print-content-dzmc>p”。

4.3 招標網站爬蟲的實現

如4.1節和4.2節所述,爬蟲的數據主題是項目采購需求,爬取規則是{公告類型,發布時間}的組合條件,提取數據是高校信息化采購公告信息,最后數據需要保存在本地的excel 文件內。基于第2節提出的聚焦網絡爬蟲的架構,招標網站爬蟲的實現由以下幾個模塊組成,如圖5所示。

圖5 招標網站爬蟲模塊

1)webcrawer 模塊是網頁爬取器,調用Request和json 庫實現網頁爬取功能。首先通過Request爬取“項目采購”首頁并獲取json格式的網頁數據,然后采用json 庫解析數據獲取公告列表內所有公告信息(包括公告標題、詳細網頁url、公告發布時間),最后爬取公告詳細網頁,返回包含公告詳細信息的html文件。

2)prjpurwillcrawer 模 塊、purchasezbcrawer 模塊、purchaseplancrawer 模塊、purchasedemandcrawer模塊分別實現“采購意向”、“采購招標”、“采購計劃”、“采購需求”四類采購公告信息的數據解析和數據處理功能。首先調用Beautiful soup 解析webcrawer 返回的html 文件,根據“selecter”路徑獲取公告的詳細信息,然后定義正則表達式匹配公告標題,匹配的邏輯規則是:{“學院”、“大學”、”學校”}&{“信息”、“軟件”、“系統”、“硬件”},爬蟲停止條件是爬遍所有滿足檢索條件的全部招標公告的詳細信息網頁。

3)exfiler 模塊是數據存儲模塊,調Python 的第三方庫xlwt,實現在本地文件系統內創建excel 文件,并往文件內寫入數據。

4)PrjPurchaseInfoCrawer 模塊 是 爬蟲的 調 度器,定義main 入口函數,main 函數首先初始化數據爬取規則,然后分別調用prjpurwillcrawer、purchasezbcrawer、purchaseplancrawer、purchasedemandcrawer 四個模塊爬取四類公告類型的招標信息;如果有數據返回,調用exfiler 模塊以當前時間為文件后綴名在本地文件系統內生成excel 文件,最后將返回的數據以統一格式保存在相應的excel 文件中。

招標網站爬蟲每天定時爬取高校信息化采購公告的相關信息,其中爬取的部分數據保存結果如圖6所示。

圖6 招標網爬蟲的爬取數據

5 結語

聚焦網絡爬蟲能夠快速、準確地爬取門戶網站主題信息。本文采用Python 語言提供的本地庫和第三方庫,以模塊化編程思想為指導,設計了一個通用的聚焦網絡爬蟲。以某省政府采購網為例,實現了一個招標網站爬蟲系統,為聚焦爬蟲系統的設計和實現提供了一個實現案例,下一步將增強爬蟲組件的松耦合性和擴展性。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 欧美三级视频网站| 国产制服丝袜91在线| 国产尤物在线播放| 3p叠罗汉国产精品久久| 青草视频在线观看国产| 天天躁狠狠躁| 亚洲色图欧美激情| 久久黄色小视频| 69国产精品视频免费| 国产va视频| 亚洲精品第五页| 国产精品v欧美| 亚洲精品国产综合99久久夜夜嗨| 亚国产欧美在线人成| 国产情侣一区二区三区| 国产91特黄特色A级毛片| 久久精品aⅴ无码中文字幕 | 久久亚洲高清国产| 亚洲男人的天堂视频| 国产精品成人一区二区不卡 | 亚洲美女一级毛片| 国产乱子伦手机在线| 色哟哟精品无码网站在线播放视频| 免费a级毛片视频| 国产一级毛片yw| 国产精品极品美女自在线| 色网站免费在线观看| 伊人久久综在合线亚洲2019| 色亚洲成人| 亚洲熟妇AV日韩熟妇在线| 在线中文字幕日韩| 一级毛片免费的| 91在线丝袜| 欧美高清日韩| 亚洲国产综合精品一区| 亚洲欧美在线看片AI| 亚欧美国产综合| 日韩av无码DVD| 欧美中文一区| 中文字幕无码制服中字| 四虎影视永久在线精品| 国产一级一级毛片永久| 在线a网站| 91小视频在线观看| 精品1区2区3区| 国产中文一区二区苍井空| 国产三级韩国三级理| 国产午夜精品鲁丝片| 久久综合色88| 精品视频一区在线观看| 国产在线一区视频| 女人天堂av免费| 欧美一级夜夜爽www| 成人午夜视频网站| 一级毛片高清| 久久亚洲欧美综合| 精品少妇三级亚洲| 三级毛片在线播放| 华人在线亚洲欧美精品| 日本中文字幕久久网站| 第一区免费在线观看| 久久99国产综合精品1| 国产丝袜无码精品| 婷婷亚洲视频| 一本久道久综合久久鬼色| 国产二级毛片| 国产成人免费高清AⅤ| 亚洲三级视频在线观看| 亚洲视频一区| 亚洲一区色| 免费不卡在线观看av| 国产精品无码AV中文| 午夜毛片免费观看视频 | 国产人成网线在线播放va| 精品人妻系列无码专区久久| 亚洲成人一区在线| 在线观看免费黄色网址| 久久无码av三级| 国产成人综合久久精品下载| 亚洲欧美一区二区三区麻豆| 精品少妇人妻av无码久久| 国产黄在线免费观看|