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的業務過程模型管理方法研究
主站蜘蛛池模板: 精品亚洲麻豆1区2区3区| 国产精品视屏| 114级毛片免费观看| 日韩美女福利视频| 日本一区高清| 亚洲第一成人在线| 亚洲无码91视频| 毛片网站观看| 欧美国产精品不卡在线观看| 91久久国产热精品免费| 久久国产高潮流白浆免费观看| 91九色最新地址| 热久久国产| 免费一级α片在线观看| 丁香亚洲综合五月天婷婷| 久热re国产手机在线观看| 亚洲二三区| 97国产一区二区精品久久呦| 午夜福利视频一区| 欧美日本不卡| 精品福利网| 国产成+人+综合+亚洲欧美| 日韩中文字幕亚洲无线码| 亚州AV秘 一区二区三区| 伊人精品成人久久综合| 欧美午夜视频在线| 日本亚洲成高清一区二区三区| 高清不卡毛片| 久久免费看片| 99视频在线看| 97在线公开视频| 日韩国产另类| 国产精品女人呻吟在线观看| 亚洲视频一区| 色综合手机在线| 成年女人a毛片免费视频| A级毛片无码久久精品免费| 亚洲一级毛片在线观| 99热线精品大全在线观看| 国产素人在线| 久久无码av三级| 91丝袜在线观看| 免费又黄又爽又猛大片午夜| 国产成人一区免费观看| 精品偷拍一区二区| 女人毛片a级大学毛片免费| 久久人妻xunleige无码| 国产乱视频网站| 潮喷在线无码白浆| 免费观看国产小粉嫩喷水| 亚洲精品桃花岛av在线| 欧美久久网| 亚洲欧美自拍一区| 亚洲看片网| 伊人网址在线| 国产小视频在线高清播放| 国产精品无码一二三视频| 91亚瑟视频| 妇女自拍偷自拍亚洲精品| 国产福利在线免费| 国产成人综合久久精品尤物| 亚洲天堂自拍| 欧美精品亚洲精品日韩专区| 2018日日摸夜夜添狠狠躁| 亚洲无线一二三四区男男| 国产美女在线观看| 成人在线视频一区| 试看120秒男女啪啪免费| 精品91在线| 亚洲福利视频一区二区| 成人亚洲天堂| 国模粉嫩小泬视频在线观看| 免费国产高清视频| 欧美一区二区三区香蕉视| 大陆精大陆国产国语精品1024| 国内丰满少妇猛烈精品播| 亚洲精品大秀视频| 亚洲精品成人片在线观看| 亚洲天堂视频在线播放| 久久婷婷色综合老司机| 亚洲精品成人片在线观看| 久久婷婷国产综合尤物精品|