1、驱动下载

百度图片这种网站是动态的,即并不是网页中的内容全部存储在源代码中,而是不停地动态刷新,所以需要使用selenium模拟浏览器登录,除了安装selenium库之外,还需要针对不同地浏览器安装不同的驱动。

驱动安装(含网址)传送门在此:

传送门

2、python代码

话不多说,直接上代码,由于是几年前写得代码了,模块化程度很low,各位将就看吧!

  1. 注意代码中存放图片的文件路径。
  2. 运行代码之后,电脑会自动打开浏览器,且会模仿人浏览浏览器的操作,静静看着就好!
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import requests

def getnamepage(name):
    b.get('http://image.baidu.com/')
    search_box=b.find_element_by_id('kw') # 找到搜索框对应的位置(可以在搜索框位置右键查看元素)
    search_box.send_keys(name) # 将搜索关键词输入搜索框
    search_box.send_keys(Keys.ENTER) # 回车
    time.sleep(5) # 休眠5秒钟,可要可不要,休眠的目的是为了防反爬虫

def download(imglist,num):
    ele=b.find_element_by_id('sizeFilter') # 找到选取尺寸的位置
    ActionChains(b).move_to_element(ele).perform() # 鼠标在选择尺寸的位置悬停
    time.sleep(5)
    ele4=b.find_element_by_xpath('//*[@id="sizeFilter"]/div/ul/li[3]') # 找到特大尺寸的位置
    ActionChains(b).move_to_element(ele4).perform() # 鼠标悬停
    time.sleep(5)
    ele4.click() # 鼠标左击,选择最大尺寸
    time.sleep(5)
    
    
    #打开第一张图片,在此界面中点击左右切换图片
    ele1=b.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/ul/li[1]/div[1]/a/img')
    ele1.click()
    b.switch_to.window(b.window_handles[1])#很重要的一步,切换窗口,否则页面找不到元素,python shell里面是b.switch_to_window
    x=1
    for i in range(1,num+1):
        #ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
        #ele3.click()
        #time.sleep(3)#为保险起见,设置一个睡眠和爬取的时间差
        
        ele2=b.find_element_by_xpath('//*[@id="currentImg"]') # 找到图片链接所在的字符串
        img=ele2.get_attribute('src') #获取当前图片的url链接
        r=requests.get(img)
        if r.status_code==200: # 判断返回状态码,如果不是200,则无法继续操作
            path='D://study/VGG_16//img/9/%d.jpg'%x # 图片存储路径
            print('正在爬取  '+img)
            with open(path,'wb') as f:
                f.write(r.content)
                time.sleep(1)
                f.close()
                print('爬取成功')
                x+=1
            ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
            ele3.click()
            #time.sleep(3)
        #跳到下一张
        else:
            ele3=b.find_element_by_xpath('/html/body/div[1]/div[2]/div/span[2]/span')
            ele3.click()
            time.sleep(1)
            continue
        

if __name__=="__main__":
    b=webdriver.Chrome()
    name='李圣经'#定义要搜索的管检测
    num=500 # 定义搜索数量
    imglist=[]
    getnamepage(name)
    download(imglist,num)
    b.close()
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐