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

        ?

        基于Python和Scrapy框架的網(wǎng)頁爬蟲設計與實現(xiàn)

        2021-07-19 08:32:22陳皓周傳生
        電腦知識與技術 2021年13期
        關鍵詞:網(wǎng)絡爬蟲數(shù)據(jù)采集大數(shù)據(jù)

        陳皓 周傳生

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

        關鍵詞:大數(shù)據(jù);網(wǎng)絡爬蟲;scrapy框架;數(shù)據(jù)采集

        中圖分類號: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

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

        1 Web爬蟲設計的技術基礎

        1.1 網(wǎng)頁抓取策略

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

        1.2 Scrapy框架組成及數(shù)據(jù)流向

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

        Scrapy主要組件有Scrapy Engine(引擎),Scheduler(調度器),Downloader(下載器),Spider(爬蟲器),Item Pipeline(管道)。還有兩個中間件:Downloader Middlewares(下載器中間件)和Spider Middlewares(爬蟲器中間件),箭頭代表Scrapy的數(shù)據(jù)流,數(shù)據(jù)流有引擎控制。詳細架構及數(shù)據(jù)流向如圖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:根據(jù)request下載頁面,返回response給Scrapy Engine。

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

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

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

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

        1.3 Xpath頁面解析

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

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

        Xpath使用路徑表達式可以在網(wǎng)頁源代碼中選取節(jié)點,可以說它是沿著路徑來截取數(shù)據(jù)的,常用表達式如表1所示。

        2 Web爬蟲的設計

        2.1 爬取數(shù)據(jù)的基本流程

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

        2.2 基于Scrapy框架的目標網(wǎng)站數(shù)據(jù)采集

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

        2.2.1 確定目標

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

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

        2.2.2 網(wǎng)站頁面分析

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

        2.2.3 分步實現(xiàn)

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

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

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

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

        3 Web爬蟲的應用示例

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

        4 結束語

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

        參考文獻:

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

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

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

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

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

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

        [7] 柴喚友,劉三女牙,康令云,等.教育大數(shù)據(jù)采集機制與關鍵技術研究[J].大數(shù)據(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] 劉智慧,張泉靈.大數(shù)據(jù)技術研究綜述[J].浙江大學學報(工學版),2014,48(6):957-972.

        【通聯(lián)編輯:代影】

        猜你喜歡
        網(wǎng)絡爬蟲數(shù)據(jù)采集大數(shù)據(jù)
        煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設計與實現(xiàn)
        鐵路客流時空分布研究綜述
        基于廣播模式的數(shù)據(jù)實時采集與處理系統(tǒng)
        軟件工程(2016年8期)2016-10-25 15:54:18
        通用Web表單數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)
        軟件工程(2016年8期)2016-10-25 15:52:53
        基于開源系統(tǒng)的綜合業(yè)務數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
        基于大數(shù)據(jù)背景下的智慧城市建設研究
        科技視界(2016年20期)2016-09-29 10:53:22
        基于社會網(wǎng)絡分析的權威網(wǎng)頁挖掘研究
        主題搜索引擎中網(wǎng)絡爬蟲的實現(xiàn)研究
        淺析如何應對網(wǎng)絡爬蟲流量
        中國市場(2016年23期)2016-07-05 04:35:08
        精品高清一区二区三区人妖| 人妻丰满熟妇av无码区免| 亚洲暴爽av天天爽日日碰| 亚洲精品日本| 国产自拍精品视频免费观看| 国产在线一区二区av| 色综合久久久无码中文字幕| 亚洲日本中文字幕天天更新| 亚洲AV综合A∨一区二区| 毛片av在线尤物一区二区| 日本不卡视频一区二区三区| 中文字幕乱码在线婷婷| 日本免费一区二区三区影院| 狼狼综合久久久久综合网| 秋霞午夜无码鲁丝片午夜精品 | 亚洲一区二区三区99区| 男人天堂亚洲一区二区| 国产av熟女一区二区三区| 男女裸交无遮挡啪啪激情试看| 亚州精品无码人妻久久| 亚洲伊人成综合人影院| 日本系列有码字幕中文字幕| 男人和女人做爽爽免费视频| 波多野结衣一区二区三区高清| 综合久久久久6亚洲综合| av资源在线免费观看| 欧美性受xxxx黑人猛交| 欧美艳星nikki激情办公室| 欧美黑人粗暴多交高潮水最多| 在线成人tv天堂中文字幕| 91羞射短视频在线观看| 亚洲国产成人极品综合| 国产一区二区波多野结衣 | 亚洲国产福利成人一区二区 | 久久久久亚洲av综合波多野结衣| 久久久久久伊人高潮影院| 亚洲九九九| 亚洲熟女天堂av一区二区三区| 亚洲av无码国产精品久久| 国产午夜福利久久精品| 曰本女人与公拘交酡免费视频|