利用python+selenium批量下載圖片

周末玩游戲時看到了不少好看的皮膚,就想著下載下來當做壁紙。想到做到,立馬開搞;

其實主要分為兩大步就可以搞定:

  • 首先需要用python寫一個利用url地址下載圖片的方法;
  • 然后通過分析要下載的頁面,寫一個通過selenium批量獲取下載地址的代碼;

利用python下載網絡圖片的代碼

import urllib.request

def download_url_img(img_url, img_address):
    response = urllib.request.urlopen(img_url)
    img = response.read()
    with open(img_address, 'wb') as f:
        f.write(img)

利用selenium定位元素獲取圖片地址,完整代碼如下

import os
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

from Utils.down_save_url_img import download_url_img


def driver_wait(dr, xpath):
    WebDriverWait(dr, 20, 2).until(EC.presence_of_element_located((By.XPATH, xpath)))


iterms = []
driver = webdriver.Chrome()

driver.get('https://pvp.qq.com/web201605/wallpaper.shtml###')

while True:
    sleep(2)
    img_class_names = driver.find_element_by_class_name('p_hd').find_elements_by_class_name('p_newhero_item')
    for class_name in img_class_names:
        name = class_name.find_element_by_tag_name('h4').find_element_by_tag_name('a').text
        lis = class_name.find_element_by_tag_name('ul').find_elements_by_tag_name('li')  # 獲取ul下的所有l(wèi)i
        img_url = lis[1].find_element_by_tag_name('a').get_attribute("href")  # 選取自己需要的li
        iterm = name, img_url
        iterms.append(iterm)
    totalpage = driver.find_element_by_class_name('totalpage').text
    if int(totalpage.split('/')[0]) != int(totalpage.split('/')[1]):  # 判斷是否為最后一頁
        # 點擊下一頁
        driver.find_element_by_class_name('downpage').click()
    else:
        break

driver.quit()
print(iterms)
for iterm in iterms:
    address = "/Users/Pictures/wzry/"
    os.chdir(address)  # 更換目錄
    img_address = iterm[0] + '_1280*720.jpg'
    download_url_img(iterm[1], img_address)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容