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

基于Python和Scrapy框架的網頁爬蟲設計與實現

2021-07-19 08:32:22陳皓周傳生
電腦知識與技術 2021年13期
關鍵詞:數據采集大數據

陳皓 周傳生

摘要:針對不同的網頁數據環境設計有效的爬蟲方案,更加有助于爬取信息的準度和效度。文中以Python及其Scrapy框架為基礎,以貝殼網為例,通過對網站的頁面源碼結構進行深入分析,編寫了行之有效的爬蟲文件來獲取目標網站信息。該設計方法可以應用到不同的多級頁面信息類型網站,為基于Web的數據分析提供策略采集和分析支持。

關鍵詞:大數據;網絡爬蟲;scrapy框架;數據采集

中圖分類號:TP3? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)13-0003-03

Abstract: Designing effective crawling strategies for different network data environments can enhance the accuracy and validity of crawling information. Taking Bakclass.com as an example, this paper analyzes the structure of the source code of the website page based on Python and its Scrapy framework environment, and then composes effective crawler files to obtain target website information. Targeting the type of different multi-level information websites, this designing method supports network data analysis based on Web by acquiring and analyzing strategies.

Key words: big data; web crawler; scrapy framework; data acquisition

如今正值人工智能和物聯網高速發展時期,大數據正是由于網絡時代發展而衍生的必然產物,亞馬遜網絡服務(AWS)的大數據科學家John Rauser給這樣定義:“大數據是任何超過了一臺計算機處理能力的龐大數據量”。由于它是一個體量巨大,數據類別巨大的數據集,所以如何快速從中獲取有效信息正是大數據所需研究的重點問題。網絡爬蟲則是解決這些重點問題的關鍵技術中的一種。網絡爬蟲是一種按照一定規則,自動地抓取網絡信息的程序或腳本,另外還有一些不常使用的名字:螞蟻、自動索引、模擬程序、蠕蟲[1]。從本質上來說,爬蟲就是利用自動化程序從網上批量抓取我們所需要的數據。

1 Web爬蟲設計的技術基礎

1.1 網頁抓取策略

在爬取網頁數據的過程中,待抓取的URL隊列以什么樣的順序排列,在爬蟲系統中是一個很重要的問題,因為涉及抓取頁面的先后順序,而這種決定URL排列順序的方法,被稱之為抓取策略[2]。網頁的抓取策略主要分為兩種:基于深度優先的遍歷和基于廣度優先的遍歷。深度優先遍歷在于能夠將所有深層的URL全部找到,缺點是有可能一旦開始搜索或許會陷入永久搜索無法跳出[3-4]。而廣度優先遍歷的好處是降低了重復率而不用反復爬取,但頁面更新后,信息的更新會不及時,并且每次的判斷可能會消耗較多資源和時間。

1.2 Scrapy框架組成及數據流向

Scrapy具有功能強大、爬取效率高、相關擴展組件多、可配置和可擴展程度強的爬蟲框架。它基于Twisted的異步處理框架,是純Python實現的爬蟲框架,其架構清晰,模塊耦合程度低,可以靈活的完成各種需求[5]。簡單來說,Scrapy是一個為了爬取網站數據,提取數據而編寫的應用框架。

Scrapy主要組件有Scrapy Engine(引擎),Scheduler(調度器),Downloader(下載器),Spider(爬蟲器),Item Pipeline(管道)。還有兩個中間件:Downloader Middlewares(下載器中間件)和Spider Middlewares(爬蟲器中間件),箭頭代表Scrapy的數據流,數據流有引擎控制。詳細架構及數據流向如圖1所示。

(1)Scrapy Engine:向Spider請求第一個要抓取的URL。

(2)Spider:提供URL給引擎。

(3)Scrapy Engine:接收到URL,交給Scheduler排序入隊。

(4)Scheduler:將URL處理成request給Scrapy Engine。

(5)Scrapy Engine:接收到request,并通過Downloader Middlewares給Downloader下載。

(6)Downloader:根據request下載頁面,返回response給Scrapy Engine。

(7)Scrapy Engine:接收到response,并通過Spider Middlewares給Spider處理。

(8)Spider:處理response,提取網站數據,返回結構item給Scrapy Engine,如果有跟進的request也會給Scrapy Engine。

(9)Scrapy Engine:接收到item,交給Item Pipeline。

(10)Item Pipeline:如有新的request交給Scheduler處理,并從第2步開始重復直到調度器沒有request,引擎就會關閉本次爬蟲。

1.3 Xpath頁面解析

通過Scrapy將數據從網頁爬去下來之后,需要從每個網頁解析并提取出數據,常用提取網頁數據主要有三種方式:正則表達式、Beautiful Soup和Xpath,三種方法各有千秋,本文選擇Xpath來提取網頁數據。

Xpath全稱XML path Language,即XML路徑語言,最初用于搜索XML文檔,同樣也適用于HTML文檔搜索。使用Xpath頁面解析的特點在于:一是Scrapy提供了簡潔明了的路徑選擇表達式以及豐富的內建函數,用于對字符串、數值、時間的匹配。二是Xpath提供的路徑表達式可以進行順暢的序列化處理,所有想要定位的標簽節點,都可以使用Xpath來選擇。三是當面對比較復雜的網頁源代碼時,Xpath更容易對源數據進行解析,并且較之Beautiful Soup速度更快。

Xpath使用路徑表達式可以在網頁源代碼中選取節點,可以說它是沿著路徑來截取數據的,常用表達式如表1所示。

2 Web爬蟲的設計

2.1 爬取數據的基本流程

爬取目標網站之前,首先要確定采集目標,明確采集字段的位置信息和邏輯結構。通過整體布局,需確定是否制定采集策略,如需植入采集策略,可根據源碼字段的邏輯結構進行設置。其次對已確定的采集字段進行頁面和源碼之間的關系分析,檢查采集字段所處頁面位置,并依據其關系實施相應的采集方法。最后通過以上分析,選擇符合該頁面特點的路徑表達式進行數據解析,并通過編寫爬蟲各功能模塊來分步實現該網站的數據爬取。圖2描述的是一個爬取網頁數據的基本流程。

2.2 基于Scrapy框架的目標網站數據采集

為了描述本Web爬蟲的具體實現,本文結合國內知名房屋交易網站貝殼網(https://sy.ke.com/ershoufang/)分布說明。

2.2.1 確定目標

實施操作之前,需確定數據目標。通過觀察頁面得出,列表頁展示的是房屋基本信息,對應的詳細信息需要進入到詳情頁面才可以看到。所以列表頁中并沒有顯示全部的數據信息,如果想要提取這些數據,必須進入詳情頁采集。本次所采集的數據共有8個字段,列表頁采集總價、單價、小區名稱;詳情頁則采集戶型、裝修情況、面積和所在區域。

采集策略方面,Scrapy采用后進先出隊列的方式,在默認情況下該框架為深度優先遍歷來爬取網頁數據,但根據信息位置和邏輯結構不同,可將遍歷方式更改為廣度優先,具體操作需要在settings文件中設置DEPTH_PRIORITY=1完成策略更改。爬取數據時,0表示深度優先,1表示廣度優先。

2.2.2 網站頁面分析

通過觀察目標URL可以發現,第二頁為:https://sy.ke.com/ershoufang/pg2,第三頁為:https://sy.ke.com/ershoufang/pg3,而第一頁的內容使用https://sy.ke.com/ershoufang/pg1同樣可以訪問,所以可以得出頁面是通過一個參數pn*來確定的,修改*即可以實現爬取翻頁操作。在房屋信息方面,可以找到列表中總價、單價、小區名稱等字段均包含在屬性值為class的li標簽中,所以列表頁的數據可以直接采集,而詳情頁數據需先采集列表頁中詳情頁的URL字段,再通過回調URL來實現采集剩余字段。

2.2.3 分步實現

首先創建一個新的Scrapy項目建立爬蟲,編碼爬蟲文件。系統自動生成文件時,定義的爬蟲類必須繼承于Scrapy.Spider類,并且文件中已經提前設置好了爬蟲器唯一的名字name,規定了爬蟲爬取域名的范圍allow_domains=[],并建立parse方法,用于獲取下載的response來解析網頁。通過循環遍歷構造出每個頁面的網址,將網址添加進start_urls列表中。

然后,定義兩個函數分別為parse和parse_detail用來解析列表頁數據和詳情頁數據。在parse方法中,運用Xpath解析出列表頁字段所在標簽位置,同時通過relsult字典保存遍歷出的詳情頁URL、小區名稱、總價和單價字段,并傳遞下去。

最后爬蟲深入詳情頁采集其他字段,在 parse方法中需使用yield來實現多級頁面爬取,通過運用scrapy.Request()構造一個新的請求對象,使用callback參數定義回調函數,來決定使用parse_detail方法處理這次新的請求響應。

本爬蟲設計關鍵在于從列表頁進入到詳情頁采集數據的實現。通過運用Scrapy自身并行獲取的能力,運用yield發起新的請求,定義詳情頁URL是鏈接,使用meta傳遞item參數,并使用callback參數為這個請求添加回調函數。而parse_detail用來處理新鏈接的response,使用meta={‘result:result}接收傳遞的字典數據(即列表頁字段數據),同時解析詳情頁字段內容。最后使用yield item返回item,將列表頁和詳情頁的數據統一交給item pipeline做后續處理。圖3描述的為本文所采用的基于Scrapy框架的爬蟲流程圖。

3 Web爬蟲的應用示例

為了測試本Web爬蟲的應用效果,結合貝殼網(https://sy.ke.com/ershoufang/)做出了如下測試。在管道模塊中運用openpyxl庫進行數據存儲,將已經爬取到的數據保存到文件中。通過修改robots默認協議為ROBOTSTXT_OBEY=False,設置爬取速度DOWNLOAD=3,并配置相應USER_AGENT來實現數據爬取,啟動爬蟲命令后,會顯示大量輸出信息。該項目測試運行后成功獲取了網站上3000多條房源的目標數據,達到了預期的爬取速度和爬取質量,打開文件可看到直觀的數據信息。提取數據最后保存結果如圖4所示。

4 結束語

隨著大數據在各個領域和環節的應用逐步深入與發展,各類完整及快速的數據采集技術需求更加迫切和專業,本文基于Scrapy框架對爬蟲文件進行設計,根據爬取網站數據的基本流程,運用Scrapy框架強大的并行獲取數據能力,完成了對貝殼網房產數據的多級頁面提取,實現了對網站龐大數據信息的批量獲取。

參考文獻:

[1] 王芳.基于Python的招聘網站信息爬取與數據分析[J].信息技術與網絡安全,2019,38(8):42-46,57.

[2] 謝克武.大數據環境下基于python的網絡爬蟲技術[J].電子制作,2017(9):44-45.

[3] 杜雷,辛陽.基于規則庫和網絡爬蟲的漏洞檢測技術研究與實現[J].信息網絡安全,2014(10):38-43.

[4] 揭秋明.基于Ajax的深層網絡爬蟲研究[D].武漢:中國地質大學(武漢),2013.

[5] 杜鵬輝,仇繼揚,彭書濤,等.基于Scrapy的網絡爬蟲的設計與實現[J].電子設計工程,2019,27(22):120-123,132.

[6] 溫佐承,侯帥.基于Python的網絡爬蟲設計與實現[J].電腦編程技巧與維護,2020(7):21-23,42.

[7] 柴喚友,劉三女牙,康令云,等.教育大數據采集機制與關鍵技術研究[J].大數據,2020,6(6):14-25

[8] Kausar M A,Dhaka V S,Singh S K.Webcrawler:A review[J].International Journal of Computer Applications,2013,63(2):31-36.

[9] 劉智慧,張泉靈.大數據技術研究綜述[J].浙江大學學報(工學版),2014,48(6):957-972.

【通聯編輯:代影】

猜你喜歡
數據采集大數據
CS5463在植栽用電子鎮流器老化監控系統中的應用
大數據時代高校數據管理的思考
科技視界(2016年18期)2016-11-03 22:51:40
鐵路客流時空分布研究綜述
基于廣播模式的數據實時采集與處理系統
軟件工程(2016年8期)2016-10-25 15:54:18
通用Web表單數據采集系統的設計與實現
軟件工程(2016年8期)2016-10-25 15:52:53
基于開源系統的綜合業務數據采集系統的開發研究
大數據環境下基于移動客戶端的傳統媒體轉型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數據背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數據+輿情:南方報業創新轉型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
主站蜘蛛池模板: 精品无码国产一区二区三区AV| 国产97视频在线| 国产国产人成免费视频77777| 欧美日韩午夜| 亚洲首页在线观看| 波多野结衣一区二区三视频 | 国产综合亚洲欧洲区精品无码| 久久伊人操| 亚洲天堂视频在线观看| 国产鲁鲁视频在线观看| 日本黄色a视频| 亚洲中文无码av永久伊人| 伊人精品成人久久综合| 亚洲天堂日韩av电影| 韩日无码在线不卡| 自慰网址在线观看| 久久亚洲欧美综合| 国产sm重味一区二区三区| 日本欧美视频在线观看| 亚洲Av激情网五月天| 国产毛片片精品天天看视频| 九九九久久国产精品| 乱人伦99久久| 一本一道波多野结衣一区二区 | 日韩AV无码免费一二三区| 91精品日韩人妻无码久久| 亚洲精品爱草草视频在线| 亚洲国产精品成人久久综合影院| 一级毛片免费观看不卡视频| 欧美特黄一级大黄录像| 国产在线小视频| 中文字幕在线看视频一区二区三区| 亚洲成人一区二区三区| 日本伊人色综合网| 97视频在线精品国自产拍| 在线一级毛片| 国产美女主播一级成人毛片| 四虎影视永久在线精品| 国产原创第一页在线观看| 精品无码视频在线观看| 又爽又大又光又色的午夜视频| 无码丝袜人妻| 大陆精大陆国产国语精品1024| 91免费精品国偷自产在线在线| 国产成人无码久久久久毛片| 日韩精品欧美国产在线| 欧美狠狠干| 精品人妻AV区| 一本一道波多野结衣av黑人在线| av在线无码浏览| 亚洲人成网7777777国产| 91麻豆久久久| 亚洲人成网站18禁动漫无码| 青青草国产精品久久久久| 久草视频精品| 喷潮白浆直流在线播放| 国产成人亚洲综合a∨婷婷| 亚洲国产无码有码| 国产欧美视频在线| 另类重口100页在线播放| 人妻精品全国免费视频| 色欲综合久久中文字幕网| 亚洲色图欧美一区| 国产亚洲视频中文字幕视频| 69免费在线视频| 欧美日韩国产在线播放| 22sihu国产精品视频影视资讯| 巨熟乳波霸若妻中文观看免费| 亚洲福利视频一区二区| 91啪在线| 久久久精品久久久久三级| 天天综合亚洲| 人妻精品久久无码区| 国产成人AV男人的天堂| 伊人天堂网| 浮力影院国产第一页| 在线看免费无码av天堂的| 午夜精品久久久久久久99热下载| 中文字幕永久视频| 亚洲中文无码av永久伊人| 成人无码一区二区三区视频在线观看 | 中国特黄美女一级视频|