selenium爬虫图片

selenium爬虫图片

  • 前言
  • 1. 环境配置
    • 1.1 Anaconda安装
    • 1.2 selenium安装
    • 1.3 google浏览器
    • 1.4 chromedriver配置
  • 2. 爬图片代码
  • 总结

前言

在做目标检测或语义分割时,有时没有找到自己需要的数据集,那么爬虫是一个很有效的方法,selenium可以让浏览器自动下载图片,很方便。

1. 环境配置

1.1 Anaconda安装

请参考我的另一篇文章anaconda安装

1.2 selenium安装

命令行输入

pip install selenium

1.3 google浏览器

下载纯净版,不要双核版,双核版我报错unknown error: Chrome failed to start: crashed,没有调好,可能是版本没有对应好,但是我把版本差不多的都试了一遍,还是不行。安装纯净版,没有报错,直接百度就可以下载。还要注意一点:不要改变默认路径,否则程序会报错,正常路径应该是C:\Users\Administrator\AppData\Local\Google\Chrome\Application
selenium爬虫图片_第1张图片

1.4 chromedriver配置

chromedriver下载地址
根据自己google的版本选择合适的,这里可能找不到完全一模一样版本的,可以选择附近的版本,多试几个,对应表如下,v69以上版本直接在下载地址中找。
selenium爬虫图片_第2张图片
下载后解压得到chromedriver.exe文件,将其复制到google浏览器安装目录下,并将该目录添加到环境变量path中。

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)

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/div[2]/ul/li[1]')
    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[1]/ul/li[2]/div/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:
            path='south/%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('//*[@id="container"]/span[2]/span')
            ele3.click()
            #time.sleep(3)
        #跳到下一张
        else:
            ele3=b.find_element_by_xpath('//*[@id="container"]/span[2]/span')
            ele3.click()
            time.sleep(1)
            continue
        

if __name__=="__main__":
    b=webdriver.Chrome(executable_path=r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver')
    name='猫'#定义要搜索的内容
    num=6000
    imglist=[]
    getnamepage(name)
    download(imglist,num)
    b.close()

总结

爬虫还是挺有趣的,以前做的爬虫都没记录,现在都忘了,有点僵硬,之后慢慢补吧。

你可能感兴趣的:(python深度学习,python,selenium,chrome)