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

        ?

        基于Selenium自動化圖像數(shù)據(jù)的采集

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

        馮成 劉昉

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

        關鍵詞:圖像數(shù)據(jù);自動采集;存儲;壓縮

        中圖分類號:TN919.1

        文獻標志碼:A

        0 引言

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

        1 相關技術的介紹

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

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

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

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

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

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

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

        2 圖像數(shù)據(jù)的抓取

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

        (1) 第三方庫的安裝。

        (2) 發(fā)送主頁網(wǎng)址請求,輸入搜索關鍵字完成關鍵字的搜索,實現(xiàn)網(wǎng)頁的跳轉(zhuǎn)和網(wǎng)頁頁面的切換操作。

        (3) 針對多頁汽車圖像網(wǎng)頁,實現(xiàn)汽車圖像網(wǎng)頁的分頁跳轉(zhuǎn)操作。

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

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

        2.1 第三方庫的安裝

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

        2.2 數(shù)據(jù)請求

        2.2.1 請求配置

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

        2.2.2 數(shù)據(jù)的發(fā)送和詳情頁進入

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

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

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

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

        3 分頁跳轉(zhuǎn)

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

        ……

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

        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 圖像數(shù)據(jù)下載

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

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

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

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

        5 圖像數(shù)據(jù)壓縮

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

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

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

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

        o_file:文件的輸出路徑。

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

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

        Step:調(diào)整壓縮比,設置該值為10。

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

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

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

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

        6 結語

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

        參考文獻

        [1]劉相平.大數(shù)據(jù)環(huán)境下Hadoop作業(yè)調(diào)度算法研究[D].成都:電子科技大學,2015.

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

        [3]曹瀚仁,葛其運,王鑫.用于手車式中壓斷路器限位開關的視頻檢測控制系統(tǒng)軟件設計與實現(xiàn)[J].現(xiàn)代電子技術,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

        猜你喜歡
        存儲
        檔案管理中電子文件的存儲探究
        條形碼技術在涂裝生產(chǎn)中的應用
        云計算與虛擬化
        結構化電子病歷的設計及應用
        淺敘國產(chǎn)存儲技術之發(fā)展
        某醫(yī)院數(shù)據(jù)中心虛擬化的設計與實現(xiàn)
        煙臺新型自動氣象站數(shù)據(jù)本地存儲的設計及實現(xiàn)
        關于SQL語言及存儲過程
        大型機電設備出口包裝防護
        實體與虛擬化相結合的新院數(shù)據(jù)中心機房建設
        精品久久久久久中文字幕| 欧美色资源| 中文字幕一区二区人妻出轨| 亚洲一区二区av偷偷| 女同三级伦理在线观看| 在线日本看片免费人成视久网| 挺进朋友人妻雪白的身体韩国电影| 亚洲欧美日韩精品久久亚洲区| 99久久综合狠狠综合久久| 中文字幕在线久热精品| 少妇勾引视频网站在线观看| 日韩极品视频免费观看| 亚洲七久久之综合七久久| 99热这里只有精品国产99热门精品| 国产妇女乱一性一交| 亚洲大尺度动作在线观看一区| 青草草视频在线观看华人免费| 欧洲美女熟乱av| 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 午夜男女爽爽爽在线视频| 亚洲一区二区欧美色妞影院 | 国产超碰在线91观看| 亚洲中字幕日产av片在线| 无码人妻精品一区二区三区9厂| 国产乱人伦偷精品视频| 无码之国产精品网址蜜芽| 亚洲国产av精品一区二| 免费av日韩一区二区| 18禁无遮拦无码国产在线播放 | 久久精品国产屋| 久久99精品免费国产| 人妻少妇不满足中文字幕| 久久精品女人天堂av免费观看| 国产亚洲精品第一综合麻豆| 中文字幕亚洲精品人妻| 美女射精视频在线观看| 亚洲国产精品久久艾草| 亚洲爆乳少妇无码激情| 中文字幕麻豆一区二区| 久久人妻一区二区三区免费| 国产亚洲精品a片久久久|