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

基于Python的多線程網絡爬蟲系統的研究與實現

2024-12-31 00:00:00劉瑩
無線互聯科技 2024年14期
關鍵詞:大數據

摘要:網絡爬蟲是通過編寫程序模擬瀏覽器訪問服務器、獲取目標數據的方法。在大數據環境下,爬蟲速度成為影響網絡爬蟲性能的重要評價條件之一。Python語言因其豐富的第三方庫,被廣泛應用于網絡爬蟲及數據分析等場景。文章基于Python編程語言,以提高網絡爬蟲速度為目的,探討實現網絡爬蟲速度提升的方案,并以某網站智能圖片爬取為例實現多線程爬蟲系統。

關鍵詞:Python技術;網絡爬蟲;大數據;多線程

中圖分類號:TP18文獻標志碼:A

0引言

以大數據、云計算、人工智能為代表的新一代信息技術的不斷發展,互聯網及各個系統平臺中存儲的海量數據成為推動經濟發展的重要因素。同時,人們獲取分析數據的渠道和方法發生了根本性變革。傳統的人工收集數據方式需要花費巨大的時間和精力,使用網絡爬蟲技術可以更及時全面地獲取海量數據,并實現數據的智能篩選和存儲。爬取速度是衡量用戶使用網絡爬蟲技術體驗的重要標準之一,傳統爬蟲速度慢,爬取質量難以保證。因此,本文基于Python技術,設計一種多線程爬蟲系統,可以有效提升爬蟲速度,改善用戶使用網絡爬蟲技術的體驗。

1網絡爬蟲技術介紹

1.1網絡爬蟲技術簡介

網絡爬蟲是一段計算機代碼,是由開發者按照事先約定的規則編寫,能夠自動請求網站服務器數據并獲取目標數據的程序。網絡爬蟲技術就是模擬人使用瀏覽器訪問互聯網資源,并收集服務器返回的數據。爬蟲技術經過多年的發展,已經在多個領域得到廣泛的應用,主要包括:

(1)通用網絡爬蟲,其爬取的目標是整個互聯網數據,獲得的數據是海量的,主要用于搜索引擎領域,例如百度、Google等;

(2)聚焦網絡爬蟲,其爬取的目標是某一個專題數據,目標和范圍都非常明確,主要用于某一特定主題的數據獲取,目前使用最為廣泛;

(3)增量式網絡爬蟲,當網站更新內容時,用戶啟動該爬蟲程序,獲取該網站最新的數據,主要用于數據更新領域;

(4)深層次網絡爬蟲,相對于爬取靜態頁面,深層網絡爬蟲是指通過構造Form爬取網站的動態頁面數據,這些數據通常存儲在網站的后端數據庫中[1]。

一般而言,實際應用由以上4種網絡爬蟲技術結合實現。

1.2基于Python的網絡爬蟲技術

Python是一種面向對象的高級程序設計語言,其語法簡潔易學,并且擁有大量專為爬蟲開發及數據分析而設計的庫,如Requests、Lxml、Re、bs4、Scrapy等,這些庫簡化了爬蟲的開發過程,提高了開發效率[2]。

(1) Requests庫。Requests是Python的第三方庫,能夠提供網頁訪問以及源代碼獲取的功能。開發者可以采用Requests.get(URL)方法,獲取URL地址頁面的全部源代碼。

(2) Lxml庫。Lxml庫是使用Xpath技術提取網頁數據的第三方庫,可以在HTML樹狀結構中尋找目標節點,并獲取目標數據。

(3) Re庫。Re庫是使用正則表達式獲取目標數據的Python標準庫,其處理的對象是字符串,用于匹配、檢索符合某個模式的文本對象。

(4)BeatuifulSoup庫。BeatuifulSoup是一個從HTML或XML文件中提取數據的第三方庫,bs4是BeautifulSoup庫的最新版本。開發者可以選擇Lxml或Python標準庫作為解析器,實現網頁數據的查找、定位和修改。

(5) Scrapy框架技術。Scrapy是一種常用的爬蟲框架,分為項目整體配置文件、項目設置文件、爬蟲編寫文件3個部分。開發者只需要在具體流程模塊中進行相關配置,就可以爬取網頁數據,并實現爬取結果的保存。

1.3增強網絡爬蟲技術程序健壯性的方法

在互聯網數據采集中,網頁的結構和內容千變萬化,用戶有時也會遇到服務器拒絕請求等情況。為增強爬蟲程序健壯性,開發者需要結合網站的實際架構逐一解決這些問題。

(1) headers模擬瀏覽器。網站為了攔截惡意抓取數據的行為,通常加入反爬蟲措施。服務器通過查看請求頭,判斷本次請求的發送者是真人還是爬蟲程序,如果判斷為爬蟲程序則會啟動反爬蟲機制。為了解決這個問題,開發者可以通過定制User-Agent請求頭,讓爬蟲程序模擬瀏覽器訪問[3]。具體方法如下:

headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

req=requests.get(url,headers=headers).content

(2) 設置程序休眠時間。開發者通過time.sleep()設置爬蟲程序休眠時間,降低訪問服務器的頻次,降低訪問被攔截的概率。

(3)設置代理服務器。爬蟲訪問頻率過高會被對方服務器要求暫停訪問,開發者可以通過設置代理服務器來解決這個問題。對方服務器無法獲取客戶端真實IP地址,也就無法采取反爬措施。

(4)驗證碼識別。多數網站為了辨別用戶是真人還是計算機程序,加入驗證碼等人機交互驗證功能。開發者可以采取pytesseract和Selenium等方法,實現文字、圖片驗證碼的識別。

2網絡爬蟲技術爬取速度的提升方案

2.1影響爬蟲爬取速度的主要因素

影響爬蟲爬取速度慢的主要因素在于網絡I/O操作,CPU的處理速度遠高于網絡I/O操作速度。例如,網絡爬蟲正在執行圖片下載任務,這就是一個網絡I/O操作。由于下載操作遇到阻塞,CPU處于空轉狀態,由此產生的延遲影響了網絡爬蟲技術工作效率。

2.2提升爬蟲速度的方案

針對上述因素,本文通過異步執行任務的方式來解決爬蟲速度延遲的問題,即同時爬取多個頁面,每個賽道之間互不影響。異步爬取的方案如下。

(1)多線程爬蟲。使用多個線程同時抓取數據,可實現程序的多任務執行。隨著多核處理器在現代計算機設備中的流行,在軟件中使用多線程程序的頻率也隨之增加,多線程技術可有效提高程序的運行效率。但是多線程的模式需要不停地建立與關閉線程,依然會造成一定的資源浪費[4]。

(2)分布式爬蟲。多線程爬蟲程序運行在單臺計算機上,受到計算機性能的影響,遇到大體量數據仍需要花費很多時間。分布式爬蟲可以很好地解決這個問題,其通過搭建集群,在多臺計算機上同時運行一個爬蟲程序,完成采集任務。分布式爬蟲按照不同的通信方式可以分為主從模式、自治模式和混合模式[5]。

3多線程爬蟲系統設計實現

3.1系統模塊設計

本文使用Python技術實現對某網站圖片數據的多線程爬蟲系統,主要功能模塊包括URL地址管理模塊、線程管理模塊以及數據獲取、解析和存儲模塊。各模塊主要功能如下。

(1)URL地址管理模塊。本模塊主要任務是管理和維護一個URL地址列表。

(2)線程管理模塊。本模塊按照URL地址列表對應端口數量,設置多個爬蟲線程。

(3)數據獲取、解析和存儲模塊。本模塊是整個系統的核心部分,主要功能是爬取網頁源代碼并進行解析,獲得目標數據,將目標數據進行本地化存儲。

3.2代碼實現

3.2.1網頁URL地址管理模塊的實現

開發者通過瀏覽器訪問某圖片網站,輸入查詢關鍵字,在開發者工具中查看Requests URL地址。分析URL代碼可知,word、queryWord、pn和rn分別代表關鍵詞、查詢關鍵詞、圖片數量、每頁圖片數量,其中pn=rn×(page_size+1)。編寫循環程序,獲得全部URL地址列表。核心代碼如下:

for i in range(page_size):

url=f'https://image.baidu.com/search/acjson?tn=resultjson_comamp;logid=6426048854354725441amp;ipn=rjamp;ct=201326592amp;is=amp;fp=resultamp;fr=amp;word={word}amp;cg=staramp;queryWord={word}amp;cl=2amp;…amp;pn={(i+1)*30}amp;rn=30amp;gsm=1eamp;1714648320531=’

urls.append(url)

3.2.2線程管理模塊的實現

本系統使用Python的Thread庫創建線程池管理器,線程池最大管理數量為URL地址列表數量。程序循環調用down_imgs()函數,開始多線程爬蟲。核心代碼如下:

//創建連接池管理器,根據URL端口數量確定線程數

with ThreadPoolExecutor(max_workers=len(url)) as exe:

for url in urls:

//使用連接池管理器發起請求,調用函數實現多線程爬蟲

exe.submit(down_imgs(url))

3.2.3數據獲取、數據解析及數據存儲模塊的實現

本模塊實現爬蟲的核心功能,主要包括使用requests庫獲取網頁全部源代碼和解析json數據獲取目標數據。核心代碼如下:

//使用requests庫的get()方法,獲取網頁數據

req=requests.get(url,headers=headers).json()

//解析json數據,獲得目標數據,即圖片鏈接地址

for item in req[\"data\"]:

img_url=item.get(\"thumbURL\",\"\")

if img_url:

img_data=requests.get(img_url,headers=headers).content

//將圖片以文件的形式保存在本地文件夾中,其中文件名為不重復的隨機變量

file_name = uuid.uuid4()

with open(f'imges/{file_name}.jpg','wb') as file:

file.write(img_data)

3.3結論

通過編寫程序計算爬取速度,本文比較傳統單線程爬蟲與多線程爬蟲的耗時比。核心代碼如下:

//設置爬蟲開始和結束時間,計算爬蟲實際運行時長。

starttime = datetime.now()

endtime=datetime.now()

time=(endtime-starttime).seconds

print(\"本次爬取共使用:%d秒\"%time)

本文設定在相同的網絡環境和硬件配置下,爬蟲程序爬取圖片網站的相同內容,分別設置采集頁數分別為10頁、30頁、50頁、100頁。查看爬蟲完成時間,結果如表1所示。當爬取頁數為10頁時,采用傳統爬蟲模式所用的時間為39 s,采用多線程爬蟲模式完成任務所需的時間僅為5 s,耗時比為7.8∶1,爬取頁數為30頁和50頁的耗時比分別為7.12∶1和7.37∶1,但當爬取頁數達到100頁時,耗時比優勢減小為4.28∶1。

4結語

本文基于Python網絡爬蟲技術,研究了提升爬蟲速度的多線程方案,并以爬取某網站圖片為例實現了多線程爬蟲系統。通過分析程序,結果表明多線程爬蟲在提升爬蟲速度方面比傳統爬蟲模式有較大優勢。多線程爬蟲適合大量數據同時爬取,但仍要考慮計算機CPU核數等性能指標,否則會因頻繁進行資源調度而影響整體效率。

參考文獻

[1]鐘機靈.基于Python網絡爬蟲技術的數據采集系統研究[J].信息通信,2020(4):96-98.

[2]楊健,陳偉.基于Python的三種網絡爬蟲技術研究[J].軟件工程,2023(2):24-27.

[3]沈冰,周亮,李娟,等.基于定制主題網絡爬蟲技術的不良信息檢測系統設計[J].電子技術與軟件工程,2022(5):5-8.

[4]黃子純,蔡敏.基于Java多線程的智能圖片爬蟲系統的研究與實現[J].電腦知識與技術,2022(22):55-57.

[5]何西遠,張岳,張秉文.基于分布式爬蟲的微博輿情監督與情感分析系統設計[J].現代信息科技,2024(5):111-114.

(編輯沈強編輯)

Research and implementation of multi-threaded Web crawler system based on Python

LIU" Ying

(Jinan Polytechnic Engineering, Jinan 250200, China)

Abstract: A Web crawler is a method of obtaining target data by programming to simulate a browser accessing a server. In the big data environment, the speed of Web crawler is one of the important evaluation criteria affecting the performance of Web crawler. The Python language is widely used in scenarios such as Web crawler and data analysis due to its rich third-party libraries. Based on the Python programming language, the solution to improve the speed of Web crawling is explored in this paper with the target of improving the speed of Web crawling. And taking the intelligent image crawling on a certain Website as an example, a multi-threaded crawling system is implemented.

Key words: Python technology; Web crawler; big data; multi-threading

猜你喜歡
大數據
基于在線教育的大數據研究
中國市場(2016年36期)2016-10-19 04:41:16
“互聯網+”農產品物流業的大數據策略研究
中國市場(2016年36期)2016-10-19 03:31:48
基于大數據的小微電商授信評估研究
中國市場(2016年35期)2016-10-19 01:30:59
大數據時代新聞的新變化探究
商(2016年27期)2016-10-17 06:26:00
淺談大數據在出版業的應用
今傳媒(2016年9期)2016-10-15 23:35:12
“互聯網+”對傳統圖書出版的影響和推動作用
今傳媒(2016年9期)2016-10-15 22:09:11
大數據環境下基于移動客戶端的傳統媒體轉型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數據背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數據+輿情:南方報業創新轉型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
主站蜘蛛池模板: 青青久久91| 成人免费视频一区| 亚洲人成网站日本片| 色悠久久久| 美女毛片在线| 99热这里只有精品免费| 欧美精品在线视频观看| 国内精品久久久久久久久久影视| 亚洲av色吊丝无码| 永久毛片在线播| 国产成人亚洲欧美激情| 国产欧美精品专区一区二区| 成人国产三级在线播放| 亚洲成a人片| 久久久久人妻精品一区三寸蜜桃| 国产91小视频在线观看| 91娇喘视频| 日韩人妻少妇一区二区| 欧美一区精品| 日韩欧美网址| 在线看AV天堂| 国产成人凹凸视频在线| 91精品国产麻豆国产自产在线| 亚洲欧洲日本在线| 成人a免费α片在线视频网站| 欧美v在线| 中文字幕无线码一区| 亚洲精品第一在线观看视频| 精品一区二区三区水蜜桃| 日本高清免费一本在线观看 | 亚洲视频免费在线看| 久996视频精品免费观看| 欧美在线网| 国产00高中生在线播放| 97精品国产高清久久久久蜜芽| 一本大道无码高清| 呦系列视频一区二区三区| 视频一区视频二区日韩专区| 午夜免费视频网站| 啪啪免费视频一区二区| 欧美三级不卡在线观看视频| 欧洲亚洲欧美国产日本高清| 高清视频一区| 亚洲第一区在线| 精品超清无码视频在线观看| 日本91视频| 国产麻豆精品久久一二三| 久久一本日韩精品中文字幕屁孩| 综合色88| 日本欧美在线观看| 刘亦菲一区二区在线观看| 欧美色综合网站| 久草国产在线观看| 亚洲人成影院在线观看| 在线国产91| 99re热精品视频中文字幕不卡| 99在线视频免费| 久久男人视频| 国产成熟女人性满足视频| 全部免费毛片免费播放| 国产69精品久久久久孕妇大杂乱 | 色男人的天堂久久综合| 亚洲福利一区二区三区| 精品成人免费自拍视频| 午夜爽爽视频| 国产在线观看99| 国产永久在线视频| 四虎国产在线观看| 日本人妻一区二区三区不卡影院| 国产视频久久久久| 99九九成人免费视频精品 | 日本尹人综合香蕉在线观看 | 久久黄色一级视频| 女人18毛片一级毛片在线| 成人韩免费网站| 欧美日韩资源| 天堂av综合网| 欧美啪啪精品| 日韩毛片在线视频| 九色视频在线免费观看| 久久综合干| 2020最新国产精品视频|