如何使用selenium獲取網(wǎng)頁里的圖片

如果網(wǎng)頁上的圖片放在img標(biāo)簽中,那么提取src就可以得到圖片的真實(shí)地址,但有些網(wǎng)頁上的圖片卻并非img標(biāo)簽,而是div標(biāo)簽。
是的,你沒看錯(cuò),的確是div標(biāo)簽,比如某東一些商品的詳情頁就是用div呈現(xiàn)的,這種情況下你找不到img標(biāo)簽。
使用selenium的screenshot_as_png方法雖然可以獲得這個(gè)div的截圖,但如果圖片太大就會出現(xiàn)截?cái)嗟那闆r,因此該方法不可取,要另尋良方。
沒有img標(biāo)簽,圖片是哪里來的呢?答案在css樣式中

所以想要抓取這樣的圖片,就要獲得css樣式中的background-image,辦法如下
data_id = child.get_attribute('data-id')
js = f"return $('[data-id=\"{data_id}\"]').css('background-image')"
url = driver.execute_script(js)
url = re.search(r'(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', url).group(0)
使用jquery選擇器通過data-id屬性獲得到div標(biāo)簽,然后獲取css樣式里的background-image,selenium可以執(zhí)行javascript代碼,這樣就獲取到了圖片的真實(shí)url。
url里的一些特殊字符可以通過正則表達(dá)式去掉,剩下的就是向圖片的真實(shí)地址發(fā)送請求,得到響應(yīng)后將圖片保存到本地,大功告成。
評論
圖片
表情
