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

基于aiohttp的異步爬蟲的設計與實現

2021-11-02 06:03:38范伊紅李彥蓉王朝陽
無線互聯科技 2021年17期
關鍵詞:定義程序效率

李 陽,范伊紅,李彥蓉,王朝陽

(河南科技大學 軟件學院,河南 洛陽 471000)

0 引言

當今時代是一個信息浪潮涌起的時代,不管是工程領域還是學術研究領域,大家身邊處處離不開數據。而對于數據的采集,很大程度上離不開網絡爬蟲,這也是爬蟲技術日益火爆的原因之一。當使用Python的requests庫來進行網站的爬取時,必須等待網站返回響應之后才可以接著運行,在此期間,程序一直處于等待狀態。如果每次請求網站時,網站返回響應都有一定的延遲,這樣勢必會影響爬取效率。那么有沒有一種方法可以減少這種網絡延遲的影響,并且進一步提高爬取效率呢?異步爬蟲無疑是首選。

1 異步爬蟲

1.1 異步爬蟲概述

爬蟲是I/O密集型任務,當使用異步執行的方式來操作程序代碼時,可以對爬蟲效率進行十倍甚至近百倍的提升。比如說發出了一個請求,目標站點在返回響應時有延遲,此時程序處于等待狀態,在等待的這段時間中,可以讓程序轉去處理其他事情,等響應返回之后再繼續向下執行,這樣就可極大提高程序的效率[1]。

圖1 抓包分析

1.2 異步爬蟲的知識儲備

當然,在學習異步爬蟲之前需要一些基礎知識的儲備,例如:協程的概念、同步和異步的概念、阻塞和非阻塞的概念以及協程的相關用法。本文將通過實例進行演示。

2 異步爬蟲案例

本文以某圖片網站作為案例,體驗一下異步爬蟲的高效爬取。

2.1 抓包分析,明確爬取思路

首先在目標站點搜索框上任意輸入一個關鍵字,點擊搜索到達圖片列表頁界面,然后對頁面進行抓包分析。通過分析可以發現,列表頁中響應的代碼中已經包含了該頁中所有圖片的鏈接信息,所以只需要遍歷所有的列表頁并提取出其中的圖片鏈接信息,即可大功告成[2]。

2.2 程序的基本配置

首先使用logging對日志輸出進行配置,這樣便于定位程序執行的位置。定義爬取頁數PAGE_NUMBER(列表頁的數量),最大并發數CONCURRENCY_NUMBER(每次同時發出多少個請求,此處定義不易過大,避免目標網站崩潰),目標站點的基本網址信息以及請求頭信息。

2.3 爬取列表頁

定義scrape_index(page)方法,通過接收page參數來構造每一個列表頁的請求鏈接,并且調用get_index(url)方法

來進行列表頁的爬取。注意請求后返回的結果必須是一個coroutine類型對象,否則會拋出異常[3]。

2.4 爬取圖片信息

爬取列表頁之后編寫parse_index(html)方法,對列表頁的結果進行解析并提取出其中的圖片鏈接信息,提取的方法可以使用pyquery,beautifulsoup或者正則表達式等,本文此處使用的是pyquery。定義scrape_image(url)方法,接收圖片鏈接信息作為參數,然后對圖片發出請求;得到響應后,定義write_to_file(title,data)方法,將圖片信息依次寫入文件,即可將圖片存入本地計算機。

2.5 main方法的實現

首先創建一個ClientSession對象,用該對象來發出異步請求。主要思路是要維護一個動態變化的爬取隊列,每個新產生的task會被放在隊列中。這里將爬取邏輯分為兩部分:第一部分為所有列表頁的異步爬取,第二部分為圖片信息的異步爬取。使用列表表達式將所有的列表頁爬取任務集中在一塊,聲明為一個task列表。由于程序中設置的并發數量為5,所以每次會同時發出5個請求。當發出的請求沒有立即得到響應時,程序會繼續對其他的列表頁發起請求,直到程序得到響應才會繼續往下執行。接著使用asyncio的gather方法獲取task的請求結果,并將列表頁的請求結果通過parse_index(html)方法進行解析,將所有解析出來的圖片鏈接信息都存放到事先定義好的image_url列表中。此時第一部分的列表頁的爬取已經完成。與第一部分相同,繼續將所有的圖片爬取任務聲明為另一個task列表,然后發出異步請求,使用gather方法獲取請求結果,并將圖片信息寫入文件[4]。部分代碼如下:

2.6 程序入口

在程序入口處使用asyncio的get_event_loop()方法獲取一個事件循環對象,并將main方法注冊到事件循環中,至此異步爬蟲編寫完成,代碼如下。

3 結語

本文以一個圖片網站為例,講解了基于aiohttp的異步爬蟲的程序實現,并且從技術和思路上提供了一些方法。雖然多進程或者多線程技術也可以提高爬蟲的效率,但是異步爬蟲可以節省程序調度時的開銷,所以異步爬蟲依舊是比較有優勢的。今后在異步的基礎上如何進一步提高程序的運行效率,依舊是一個極具價值和挑戰性的研究方向。

猜你喜歡
定義程序效率
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
跟蹤導練(一)2
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 视频二区亚洲精品| 91无码人妻精品一区二区蜜桃| 成年人国产视频| AV熟女乱| 中文国产成人精品久久| 9啪在线视频| 亚洲无码免费黄色网址| 农村乱人伦一区二区| 91丨九色丨首页在线播放| 孕妇高潮太爽了在线观看免费| 自慰高潮喷白浆在线观看| 一级毛片免费不卡在线| 全免费a级毛片免费看不卡| 九九九国产| 免费国产小视频在线观看| 在线无码av一区二区三区| 亚洲品质国产精品无码| 91黄色在线观看| 亚洲bt欧美bt精品| 狠狠五月天中文字幕| 在线观看亚洲成人| 国产色网站| 精品国产免费第一区二区三区日韩| 午夜精品区| 国产乱子伦视频三区| 亚洲日韩国产精品综合在线观看 | 91福利免费| 六月婷婷精品视频在线观看| 国产91色在线| 成人午夜免费视频| 久久鸭综合久久国产| jizz在线观看| 国产亚洲欧美日韩在线一区二区三区 | 91福利在线观看视频| 午夜性刺激在线观看免费| 中文字幕资源站| 久久99国产视频| 日韩人妻少妇一区二区| 亚洲日本中文综合在线| 丝袜美女被出水视频一区| 亚洲AV无码不卡无码| 日韩av无码精品专区| 欧美成人一区午夜福利在线| 精品夜恋影院亚洲欧洲| 精品国产中文一级毛片在线看 | 成人综合网址| 麻豆精品在线视频| 熟女成人国产精品视频| 国产女人综合久久精品视| 成人午夜视频网站| 久青草免费视频| 亚洲欧美成人在线视频| 青草视频免费在线观看| h视频在线播放| 男人的天堂久久精品激情| 国产精品视频白浆免费视频| 麻豆精选在线| 色综合中文字幕| 亚洲一区国色天香| 亚洲av无码久久无遮挡| 欧美在线一二区| 亚洲精品动漫| 2019年国产精品自拍不卡| 午夜视频在线观看免费网站| 毛片在线看网站| 国产综合欧美| 91精品人妻一区二区| 青青操视频在线| 欧美va亚洲va香蕉在线| 91精品久久久久久无码人妻| 一级福利视频| 久久人搡人人玩人妻精品一| 最新加勒比隔壁人妻| 国产精品99在线观看| 日日拍夜夜操| 男女精品视频| a级毛片一区二区免费视频| 久久96热在精品国产高清| 国产特级毛片| 国产激爽大片高清在线观看| 日韩天堂在线观看| 国产性猛交XXXX免费看|