在做目标检测或语义分割时,有时没有找到自己需要的数据集,那么爬虫是一个很有效的方法,selenium可以让浏览器自动下载图片,很方便。
请参考我的另一篇文章anaconda安装
命令行输入
pip install selenium
下载纯净版,不要双核版,双核版我报错unknown error: Chrome failed to start: crashed
,没有调好,可能是版本没有对应好,但是我把版本差不多的都试了一遍,还是不行。安装纯净版,没有报错,直接百度就可以下载。还要注意一点:不要改变默认路径,否则程序会报错,正常路径应该是C:\Users\Administrator\AppData\Local\Google\Chrome\Application
chromedriver下载地址
根据自己google的版本选择合适的,这里可能找不到完全一模一样版本的,可以选择附近的版本,多试几个,对应表如下,v69以上版本直接在下载地址中找。
下载后解压得到chromedriver.exe文件,将其复制到google浏览器安装目录下,并将该目录添加到环境变量path中。
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()
爬虫还是挺有趣的,以前做的爬虫都没记录,现在都忘了,有点僵硬,之后慢慢补吧。