爬虫爬取必应和百度搜索界面的图片

爬虫爬取必应和百度搜索界面的图片

爬取bing搜索图片界面

浏览器驱动下载地址

对应版本即可

浏览器驱动

mad直接用

python 复制代码
import os
import re
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

import time
os.chdir(r"D:\software_project\超声波水流量专利\code")

# 下载图片的函数
import requests
from fake_useragent import UserAgent
# 添加了一个额外的参数 image_number 来跟踪图片编号
def download_image(url, folder, image_number):
    try:
        # 生成随机的User-Agent
        ua = UserAgent()
        headers = {'User-Agent': ua.random}

        # 发送带有User-Agent的请求
        response = requests.get(url, headers=headers, stream=True)
        response.raise_for_status()

        # 使用图片编号来生成文件名
        file_name = f"{image_number}.png"
        file_path = os.path.join(folder, file_name)

        with open(file_path, 'wb') as f:
            for chunk in response.iter_content(1024):
                f.write(chunk)

        print(f"图片下载成功: {file_name}")
    except requests.exceptions.RequestException as e:
        print(f"图片下载失败: {e}")

# 指定ChromeDriver的路径
chrome_driver_path = r"D:\software_project\超声波水流量专利\code\chromedriver\chromedriver.exe"
service = Service(executable_path=chrome_driver_path)

# 创建WebDriver实例
driver = webdriver.Chrome(service=service)
# 搜索关键词
keyword = "饮料"  # 可以替换为其他关键词
# driver.get("https://cn.bing.com/images/search?q=" + keyword)



# 第二种写法,找到搜索框并输入关键词
# 适合精准收索
driver.get("https://cn.bing.com/images/")
search_box = driver.find_element(By.ID, "sb_form_q")
# 设置sb_form_q的值为0
driver.execute_script("document.getElementById('sb_form_q').value ='';")
search_box.send_keys(keyword + Keys.ENTER)


# 等待页面加载
time.sleep(1)  # 根据您的网络速度,可能需要调整等待时间
# 滚动页面加载更多图片
for i in range(10):  # 滚动 5 次
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(1)  # 等待页面加载

# 获取图片元素
image_elements = driver.find_elements(By.CSS_SELECTOR, "img.mimg")

# 提取图片URL
image_urls = [img.get_attribute("src") for img in image_elements if img.get_attribute("src") is not None]


for index, url in enumerate(image_urls[3:], start=1):
    download_image(url, "下载的图片", index)
# 关闭浏览器
driver.quit()

爬取百度搜索界面图片

mad直接用

python 复制代码
import os
import re
import requests
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
os.chdir(r"D:\software_project\超声波水流量专利\code")
# 清理文件名的函数
def clean_filename(filename):
    return re.sub(r'[\\/*?:"<>|]', '', filename)

# 下载图片的函数
import requests
from fake_useragent import UserAgent
# 添加了一个额外的参数 image_number 来跟踪图片编号
def download_image(url, folder, image_number):
    try:
        # 生成随机的User-Agent
        ua = UserAgent()
        headers = {'User-Agent': ua.random}

        # 发送带有User-Agent的请求
        response = requests.get(url, headers=headers, stream=True)
        response.raise_for_status()

        # 使用图片编号来生成文件名
        file_name = f"{image_number}.png"
        file_path = os.path.join(folder, file_name)

        with open(file_path, 'wb') as f:
            for chunk in response.iter_content(1024):
                f.write(chunk)

        print(f"图片下载成功: {file_name}")
    except requests.exceptions.RequestException as e:
        print(f"图片下载失败: {e}")

# 指定ChromeDriver的路径
chrome_driver_path = r"D:\software_project\超声波水流量专利\code\chromedriver\chromedriver.exe"
service = Service(executable_path=chrome_driver_path)

# 创建WebDriver实例
driver = webdriver.Chrome(service=service)


# 搜索关键词
keyword = "饮料"  # 可以替换为其他关键词
driver.get(f"https://image.baidu.com/search/index?tn=baiduimage&word={keyword}")
# 记得对比链接
# https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDEsMiw2LDQsNSw4LDcsOQ%3D%3D&word=%E5%9B%BE%E7%89%87

# 等待页面加载
time.sleep(2)  # 根据您的网络速度,可能需要调整等待时间

# 滚动页面加载更多图片
for i in range(5):  # 滚动 5 次
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(1)  # 等待页面加载

# 获取图片链接
image_elements = driver.find_elements(By.CLASS_NAME, "main_img")
image_urls = []
for img in image_elements:
    # 尝试从不同的属性中获取图片URL
    src = img.get_attribute("src") or img.get_attribute("data-src") or img.get_attribute("data-original")
    if src:
        image_urls.append(src)


for index, url in enumerate(image_urls[3:], start=1):
    download_image(url, "下载的图片2", index)
# 关闭浏览器
driver.quit()

结果如下

在这里插入图片描述

相关推荐
superman超哥13 小时前
仓颉Option类型的空安全处理深度解析
c语言·开发语言·c++·python·仓颉
2401_8414956413 小时前
【LeetCode刷题】跳跃游戏Ⅱ
数据结构·python·算法·leetcode·数组·贪心策略·跳跃游戏
Data_agent13 小时前
OOPBUY模式淘宝1688代购系统搭建指南
开发语言·爬虫·python
张哈大13 小时前
AI Ping 上新限免:GLM-4.7 与 MiniMax-M2.1 实测对比
人工智能·python
乘凉~13 小时前
【Linux作业】Limux下的python多线程爬虫程序设计
linux·爬虫·python
xwill*13 小时前
pytorch中项目配置文件的管理与导入方式
人工智能·python
BBB努力学习程序设计13 小时前
Python模块与包:构建可维护的代码结构
python
BBB努力学习程序设计13 小时前
Python函数深度解析:从基础到高级装饰器
python·pycharm
抹除不掉的轻狂丶14 小时前
Java 日志框架完整指南:发展历史、核心组成与最佳实践
java·开发语言·python
目标是分享一切14 小时前
python卸载的时候出现0x80070643如何解决
python