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

基于Selenium自動化圖像數據的采集

2023-07-20 03:13:58馮成劉昉
無線互聯科技 2023年9期
關鍵詞:存儲

馮成 劉昉

摘要:隨著計算機技術的發展,圖像數據被廣泛地應用在各種領域。因此,圖像數據越來越受到人們重視。文章通過分析傳統網絡爬蟲技術采集和數據存儲,指出其受到各種因素限制,導致采集圖像數據的效率低下,代碼設計編寫工作復雜,且容易造成存儲資源的浪費。為了進一步提高網絡爬蟲效率,簡化圖像采集的實現過程以及節約磁盤的存儲空間。文章以汽車之家為案例,使用一種基于Selenium+WebDriver方式完成對汽車圖像數據自動化采集,并通過OpenCV算法將汽車圖像數據進行大比例壓縮,較大地節約磁盤的存儲空間。

關鍵詞:圖像數據;自動采集;存儲;壓縮

中圖分類號:TN919.1

文獻標志碼:A

0 引言

隨著社會經濟的快速發展,汽車已經進入千家萬戶。在互聯網中的各類主題網站中存在海量的各類汽車圖像,這些汽車圖像廣受人們的喜愛。受制于技術,大多數普通用戶無法使用自動化的方式下載自己喜歡的圖像。因此,為了解決這一問題,本文采用Selenium+WebDriver自動化方式采集汽車之家的圖像數據,使用網絡爬蟲庫Xpath完成數據的解析以及采集之后汽車圖像命名,并用OpenCV技術將汽車圖像數據下載和壓縮至本地。

1 相關技術的介紹

近年來,隨著互聯網技術的快速發展1,互聯網技術在豐富網站頁面元素同時,也促進了網絡爬蟲技術快速的提升。網站頁面逐漸由單一式的靜態網頁界面逐步發展為頁面元素豐富的動態交互式網頁。網絡爬蟲中數據抓取的方式也由支持靜態網頁抓取的urllib、urllib3、requests庫,發展到支持數據動態獲取Selenium庫和大型項目scrapy框架。

requests是數據請求庫,用戶使用requests庫支持的get或者post方法發送對靜態網頁的請求,其中get方法主要應用于普通網址的請求,post方法主要應用于攜帶表單數據的請求,通過上述兩種方法,能夠獲取請求網頁的源代碼。

Xpath(XML Path Language)是一款常用的數據解析庫,用戶可以根據頁面元素位置,描述頁面路徑表達式。用戶可以使用xpath()方法提取相應的數據。

Selenium是一個廣泛應用于軟件測試領域的工具2。Selenium庫具有開源性,而被應用在Python網絡爬蟲上。其本質上模擬人操作指定的瀏覽器,并實現在瀏覽器頁面上按鈕點擊、頁面元素的定位、頁面的選擇、鍵盤的輸入等操作,實現瀏覽即可完成數據的抓取。

Selenium支持多款常用瀏覽器。在本文中,Selenium可以結合ChromeDriver使用。用戶安裝ChromeDriver根據Google Chrome當前的版本號,選擇相應的ChromeDriver版本,并在系統環境變量中配置Path路徑即可使用。

圖像壓縮一直是圖形圖像領域中比較熱門的研究方向,主要的圖像壓縮工作可以選擇在“變換”“量化”“編碼”過程中完成。壓縮分類又可分為有損壓縮和無損壓縮,有損壓縮是具有高壓縮比且允許圖像失真的一種壓縮方法,廣泛應用于圖形圖像、視頻、音頻數據的壓縮等方面。

OpenCV是一款開源且支持多種編程語言的跨平臺計算機視覺和機器學習庫3。OpenCV-Python為OpenCV的接口,它提供了全面豐富且易用的圖形圖像處理函數,因此被廣泛地應用在圖形圖像領域。

2 圖像數據的抓取

基于Selenium+WebDriver汽車之家自動化爬取汽車圖像數據,大致的流程如下:

(1) 第三方庫的安裝。

(2) 發送主頁網址請求,輸入搜索關鍵字完成關鍵字的搜索,實現網頁的跳轉和網頁頁面的切換操作。

(3) 針對多頁汽車圖像網頁,實現汽車圖像網頁的分頁跳轉操作。

(4) 針對汽車圖像數據對圖像進行下載。

(5) 針對下載后的圖像進行壓縮和存儲。

2.1 第三方庫的安裝

本文是在PyCharm環境下完成項目的開發,在程序編寫前需要使用pip命令行的方式安裝requests、lxml庫和Selenium庫、OpenCV-Python庫,具體安裝方式如表1所示。

2.2 數據請求

2.2.1 請求配置

通過谷歌瀏覽器訪問“汽車之家”首頁并復制其網址。在py文件中從Selenium模塊中導入WebDriver庫,關鍵代碼為:“from Selenium import WebDriver”,為了方便針對爬取頁面的數據定位和分析,需要將瀏覽器設置成為不自動關閉的狀態,其關鍵代碼如下:opt.add_experimental_option(‘detach,True),同時使用 opt.page_load_strategy = ‘eager配置內容,下載html內容,解決了自動化采集數據緩慢的問題,較大地改善網頁爬蟲速度。使用WebDriver.Chrome(opt)方法,opt為配置內容,生成Chrome對象。利用該對象使用get方法發送針對“汽車之家”的請求,其關鍵代碼如: driver.get(url=‘https://www.autohome.com.cn/qiandongnan/)。由于首次訪問主頁,網站自動彈出廣告,需要使用time.sleep(nums)方法暫停程序執行,nums為秒數,等待廣告自動結束彈框自動消失,能夠有效地解決彈窗廣告導致的網站頁面不一致的問題。

2.2.2 數據的發送和詳情頁進入

獲取Selenium對象后,需要選擇合適的方式定位搜索框。目前,Selenium庫支持的find_element含有XPATH,ID,NAME,CLASS_NAME,LINK_TEXT,PARTIAL_LINK_TEXT,TAG_NAME等多種定位頁面元素方式。本文根據分析首頁頁面元素情況,選擇使用ID和CLASS_NAME定位搜索框和搜索按鈕,并使用send_keys(“搜索關鍵詞”)方法實現搜索框數據的填充,通過調用click()方法模擬鼠標的點擊,其核心代碼如下:

driver.find_element(by=By.ID,value=q).send_keys("關鍵詞")

driver.find_element(by=By.CLASS_NAME,value=‘btn-search).click()

等待頁面跳轉完成之后,需要將程序切換至新的網頁頁面中,使用WebDriver提供switch_to.window(driver.window_handles[-1])方法完成最后頁面的切換,同時需要程序多次使用定位、點擊、頁面切換等方法進入至汽車詳情頁。

3 分頁跳轉

由于汽車圖像數據存在多個頁面之中,因此需要采用分頁的方式完成數據的采集。本文利用Python循環的方法,完成汽車圖像數據的翻頁操作。本研究定義了“死循環”,當使用link_text方法定位到“下一頁”,利用get_attribute(“class”)方法獲取屬性值,與其屬性值進行比較。如果不滿足選擇判斷條件,則對“下一頁”進行點擊,并切換到最后一個頁面并使用driver.current_url方法獲取當前頁面的url地址,將url地址轉發至數據下載模塊中。否則,若判斷的是最后一頁,則采用break的方法結束循環。其核心代碼如下:

……

while True:#若當前頁面不是最后一頁,則完成程序的跳轉。

if driver.find_element(by=By.LINK_TEXT,value=‘下一頁).get_attribute(‘class)!=‘page-item-next page-disabled:

driver.find_element(by=By.LINK_TEXT,value=‘下一頁).click()

driver.switch_to.window(driver.window_handles[-1])

d_url=driver.current_url

download(d_url)

else: #若當前頁面是最后一頁,則停止程序

break

…………

4 圖像數據下載

在圖像下載模塊中,獲取download(d_url)參數傳遞過來的每一頁汽車圖像網址之后,對該網址數據使用requests.get(url=d_url,headers=headers)發送請求,url為請求網址參數,headers為包含著鍵值對的字典類型請求標頭數據,主要應對網站的爬蟲措施。等待服務器頁面響應。觀察和分析響應網頁頁面元素發現,多張汽車圖像數據都在同一個ul標簽下,通過xpath完成數據的解析,獲取含有所有汽車圖像的ul標簽內容。其核心代碼如下:pic_list = html.xpath(‘/html/body/div[2]/div/div[2]/div[7]/div/div[2]/div[2]/ul),通過使用循環xpath返回的列表內容,獲取當前標簽下的每一個li標簽的src汽車圖像具體網址的屬性值。

for pic in pic_list:#./表示當前目錄,@src表示獲取src屬性的值

pic_url = pic.xpath(‘./li/a/img/@src)

再次循環pic_url提取每一個汽車圖像的具體網絡地址,將提取到的網址進行拼接。url_new = ‘https: + pic_url_a。針對拼接后的網址,再次發送requests請求,其代碼如下:response=request.get(url=url_new,headers=headers),等待頁面數據的響應之后,獲取汽車圖像二進制數據,并使用with open(pic_url_name,‘wb)as f的方法完成數據的寫入,Pic_url_name為汽車名稱,汽車名稱截取于圖像數據的鏈接地址最后一個索引所對應的數據,保持汽車名稱數據的唯一性。pic_url_name = pic_url_a.split(‘__)[-1]。‘wb為二進制方式寫入數據。將汽車圖像數據寫入文件。f.writer(response.content)。

5 圖像數據壓縮

面對大量圖像數據的存儲,往往受限于單機存儲空間的容量。為了節約存儲空間,本研究使用OpenCV庫完成圖像壓縮。

首先,自定義圖片壓縮方法:

picture_compress(i_file,o_file,target_size,quality,step,pic_type)

其中,i_file:文件的輸入路徑。

o_file:文件的輸出路徑。

Target_size:輸出文件的大小,設置該值為60。

Quality:初始壓縮比,數值越高,圖片的質量越好,設置該值為80。

Step:調整壓縮比,設置該值為10。

pic_type:圖片的格式,設置該值為jpg。

其次,通過read()方法,讀取圖像字節數據,并將數據放入buffer中,等待cv對象從內存緩存中讀取任何顏色格式圖像數據。img_cv2=cv2.imdecode(bufferdata,cv2.ImREAD_ANYCOLOR)。

使用循環方式判斷當前圖像容量是否大于設定的目標值,如果當前圖像容量大于目標容量,則繼續按照jpg圖片格式編碼,并設置圖像初始壓縮比quality,進行圖像數據的壓縮。cv2.imencode(‘.jpg,img_cv2,[int(cv2,IMWRITER_JPEG_QUALITY),quality])1

最后,使用with open(o_file,‘rb)方式寫入數據,生成新的文件。通過完成上述步驟將源文件分辨率為480×360、容量為86.5 KB的圖像,壓縮成分辨率為480×360、容量為37.5 KB、壓縮比約為56%的圖像,圖像效果較好。壓縮前后對比如圖1所示。

6 結語

本文主要采用自動化方式對汽車之家的指定汽車圖像數據進行爬取,并利用OpenCV算法將下載圖像壓縮,并保存到本地,達到了預期效果,為“網絡爬蟲技術”課程的教學活動開展,積累了豐富的實踐應用案例。

參考文獻

[1]劉相平.大數據環境下Hadoop作業調度算法研究[D].成都:電子科技大學,2015.

[2]閆龍川,張冰,袁孝宇,等.電力信息系統業務自動測試驗證系統設計與應用[J].電力信息與通信技術,2022(2):63-68.

[3]曹瀚仁,葛其運,王鑫.用于手車式中壓斷路器限位開關的視頻檢測控制系統軟件設計與實現[J].現代電子技術,2022(24):86-91.

(編輯 王永超)

Based on automated image data acquisition by Selenium

Feng Cheng, Liu Fang

(Guizhou Electronic Information Vocational and Technical College, Kaili 556000, China)

Abstract: With the development of computer technology, image data is widely used in various fields, so image data is getting more and more attention. By analyzing the traditional web crawler technology collection and data storage, this paper points out that it is limited by various factors, leading to the low efficiency of image data collection, complex code design and writing work, and easy to cause the waste of storage resources. In order to further improve the efficiency of the web crawler, simplify the implementation process of image acquisition and save the disk storage space, this paper takes Autohome as an example, using a Selenium + WebDriver method to complete the automatic collection of automobile image data, and compress the car image data in a large proportion through OpenCV algorithm, so as to save the storage space of the disk.

Key words: image data; automatic collection; storage; compression

猜你喜歡
存儲
檔案管理中電子文件的存儲探究
條形碼技術在涂裝生產中的應用
云計算與虛擬化
結構化電子病歷的設計及應用
淺敘國產存儲技術之發展
某醫院數據中心虛擬化的設計與實現
煙臺新型自動氣象站數據本地存儲的設計及實現
關于SQL語言及存儲過程
大型機電設備出口包裝防護
基于Hadoop的業務過程模型管理方法研究
主站蜘蛛池模板: 欧美一级视频免费| 亚洲日韩欧美在线观看| 伊人久久婷婷| 在线观看国产小视频| 在线另类稀缺国产呦| 国产成人精品男人的天堂| 国产精品女人呻吟在线观看| 第一区免费在线观看| 67194成是人免费无码| 国产另类视频| 亚洲欧洲日韩久久狠狠爱| 欧美在线一二区| 91九色国产porny| 蜜桃臀无码内射一区二区三区| 怡春院欧美一区二区三区免费| 97在线观看视频免费| 亚洲精品无码成人片在线观看 | 欧美高清日韩| 一本久道热中字伊人| 日韩精品亚洲精品第一页| 激情无码字幕综合| 亚洲欧美日韩中文字幕一区二区三区| 日本不卡在线| 中文无码伦av中文字幕| 91精品国产情侣高潮露脸| 在线国产91| 国产性爱网站| m男亚洲一区中文字幕| 无码中文字幕乱码免费2| 波多野结衣亚洲一区| 国产伦精品一区二区三区视频优播| 免费在线播放毛片| 久久精品亚洲专区| 亚洲人精品亚洲人成在线| 免费jjzz在在线播放国产| 手机永久AV在线播放| 无码日韩人妻精品久久蜜桃| 成人国产精品网站在线看| 久久人与动人物A级毛片| 亚洲色图欧美一区| 国产欧美自拍视频| 久久久久久午夜精品| 无码AV动漫| 国产成人综合在线观看| 亚洲欧美一区二区三区麻豆| 毛片在线播放a| 狠狠v日韩v欧美v| 欧美色香蕉| 精品色综合| 农村乱人伦一区二区| 亚洲区第一页| 亚洲欧美日韩综合二区三区| jizz国产在线| 亚洲AⅤ无码日韩AV无码网站| 亚洲欧美日韩视频一区| 久久伊伊香蕉综合精品| 亚洲av日韩综合一区尤物| 国产伦片中文免费观看| 第一区免费在线观看| 亚洲人成网站在线播放2019| 国产午夜一级淫片| 一区二区欧美日韩高清免费| 国产精品视频观看裸模| 97成人在线观看| 97精品久久久大香线焦| 精品91视频| 亚洲免费人成影院| 亚洲欧美成人影院| 亚洲va在线∨a天堂va欧美va| 永久成人无码激情视频免费| 97青青青国产在线播放| 国产欧美中文字幕| 免费在线a视频| 91美女视频在线观看| 久久人妻系列无码一区| 97综合久久| 亚洲黄网在线| 国产成人精品第一区二区| 亚洲天堂网2014| 精品国产免费观看| 亚洲天堂网2014| 超碰aⅴ人人做人人爽欧美 |