首页游戏资讯爬虫实战 -- 批量获取百度图片

爬虫实战 -- 批量获取百度图片

misa2 04-10 3次浏览 0条评论

法式介绍

我们有时因为工做原因,需要在网上下载大量的图片,下载图片一般是在百度里面下载,先在搜刮文本框里面输进图片的关键字,然后点击百度一下,网站会列出大量相关的图片,假设一张一张的下载,十分耗时,如今用Python爬虫批量下载图片。

实现办法

本脚本次要是操纵selenium库模仿人工操做,而且通过BeautifulSoup库解析Javascript动态加载的图片列表,再对获取的图片地址停止下载。

法式代码

from selenium import webdriver

from bs4 import BeautifulSoup

import urllib.request

import os

import time

# 设置搜刮关键字和保留途径

keyword = "光景"

save_path = f'D:/图片/{keyword}/'

os.path.exists(save_path) or os.makedirs(save_path)

#设置获取图片的数量

limit = 100

num = 0

# 设置阅读器

options = webdriver.ChromeOptions()

options.add_argument('headless')

browser = webdriver.Chrome(options=options)

# 翻开百度图片搜刮页面

url = '/'

展开全文

browser.get(url)

# 根据关键字搜刮图片

search_box = browser.find_element_by_css_selector('#kw')

search_box.send_keys(keyword)

submit_button = browser.find_element_by_css_selector(

'#homeSearchForm span.s_btn_wr input.s_newBtn')

submit_button.click()

# 轮回加载图片列表并下载图片

scroll_pause_time = 1

last_height = browser.execute_script("return document.body.scrollHeight")

whileTrue:

if num limit:

break

# 模仿滚动操做

browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")

time.sleep(scroll_pause_time)

new_height = browser.execute_script("return document.body.scrollHeight")

if new_height == last_height:

# 假设没有加载更多的图片,则退出轮回

break

last_height = new_height

# 解析网页并下载图片

soup = BeautifulSoup(browser.page_source, 'html.parser')

img_list = soup.select('img.main_img')

for img in img_list:

src = img['src']

if src.startswith('data'):

# 跳过编码的图片

continue

num = num +1

if numlimit:

break

filename = os.path.join(save_path, keyword+str(num)+'.jpg')

try:

urllib.request.urlretrieve(src, filename)

print("胜利下载: " + filename)

except:

print("下载失败: " + filename)

# 封闭阅读器

browser.quit()

百度三国杀下载
俏佳人黄台的APP网 美团和快手,谁跌出了“黄金坑”?
相关内容
发表评论

游客 回复需填写必要信息