网页爬虫抓取百度图片(如何用爬虫爬取图片制作自己的数据集?(组图) )
优采云 发布时间: 2022-04-04 16:17网页爬虫抓取百度图片(如何用爬虫爬取图片制作自己的数据集?(组图)
)
相信在学习tensorflow的过程中,你会想尝试自己加载我们的数据集,而不是局限于从数据集中下载数据集。但是模型的训练往往需要非常大的数据集,所以写了这篇博客,教大家如何使用爬虫爬取图片,制作自己的数据集。本博客只教你爬取原创图片数据,以及关于数据增强的博客。楼主再写一篇博文,教大家一些常用的图像处理方法。
博主使用pycharm2021.3,谷歌浏览器,第三方库文件如下。
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from time import sleep
import re
import os
另外,还需要下载一个驱动文件,chromedriver.exe,下载链接
下载前,请检查您的浏览器版本。您可以在设置中的关于 chrome 中查看。下载完成后,建议与爬虫文件放在同一目录下。
下面以爬取跑车和卡车图片的例子来教大家。
第一步是模拟加载网页
这里使用库selenium.webdriver.chrome.service,用于爬取瀑布网页的源数据。因为瀑布网页的图像数据是实时加载的,所以使用 selenium 中的模拟鼠标滚轮向下滑动加载网页。图片数据方便我们以后爬取。
#模拟加载网页
s = Service('./chromedriver.exe')
driver = webdriver.Chrome(service=s)
driver.get(
'https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDYsMSw0LDUsMiw4LDcsOQ%3D%3D&word=%E8%B7%91%E8%BD%A6')
for i in range(0,3):
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
sleep(1)
sleep(3)
page = driver.page_source
for 循环限制了要抓取的图片数量。博主的设置(0,3)当时是用来测试的,大家可以酌情调整。
这里设置的sleep是为了给网页加载时间,否则会出现无法抓取数据的情况。
第二步,匹配图片地址
正则表达式用于将图像地址保存在列表中。
#匹配图片地址
ex = 'data-imgurl="(.*?)"'
img_src_list = re.findall(ex,page, re.S)
print(img_src_list)
第三步,遍历地址,下载图片
#遍历地址,下载图片
for src in img_src_list:
img_data = requests.get(src).content
img_name = re.search('[0-9]*', src.split(',')[-1])
img_name = img_name.group(0)
img_path = 'image/img_pao' + '/' + img_name + '.jpg'
with open(img_path, 'wb') as fp:
fp.write(img_data)
print('ok')
我在这里使用 img_path 和我自己的文件名,您可以将其更改为您自己的。
需要注意的是,在这句话中,我的两个文件夹image和img_pao已经创建好了。
img_path = 'image/img_pao' + '/' + img_name + '.jpg'
然后我们跑,我们就完成了。
这里,我们的项目运行后,浏览器会自动打开,提示会由自动测试软件控制。您无需担心,只需观看它以帮助您爬行。
运行结束,文件夹中会有爬取成功的图片。