12306验证码图片一共有80类,名字如下
茶几
雨靴
护腕
本子
锦旗
烛台
海苔
中国结
龙舟
日历
红枣
药片
高压锅
锣
薯条
调色板
路灯
口哨
菠萝
挂钟
冰箱
蜥蜴
电线
航母
手掌印
热水袋
鞭炮
茶盅
海报
电子秤
蜡烛
珊瑚
蚂蚁
话梅
毛线
网球拍
沙拉
拖把
开瓶器
棉棒
风铃
黑板
盘子
金字塔
蜜蜂
文具盒
公交卡
打字机
啤酒
漏斗
印章
铃铛
绿豆
老虎
樱桃
档案袋
订书机
苍蝇拍
辣椒酱
沙包
卷尺
钟表
狮子
跑步机
锅铲
红酒
牌坊
刺绣
安全帽
红豆
剪纸
电饭煲
创可贴
蒸笼
仪表盘
海鸥
排风机
双面胶
篮球
耳塞
现在通过百度图库来下载每一类验证码图片。把上面的80个名字保存到txt文本里,当然也可以直接放在程序中。程序里为每类图片下载了300张,数量可以自己调整。
from selenium import webdriver
import requests
import os
browser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://image.baidu.com/') #百度图库
#打开存储类别名字的文本文件
with open('picture_name.txt', 'r', encoding='utf-8') as f:
keywords = f.read().split('\n')
count = 0
for word in keywords:
os.mkdir(word) # 每类图片都创建一个文件夹,分开存储
count += 1
input_id = browser.find_element_by_id('kw')
button = browser.find_element_by_class_name('s_btn_wr')
input_id.clear()
input_id.send_keys(word)
button.click()
time.sleep(1.5)
elements = browser.find_elements_by_class_name('main_img.img-hover')
while len(elements) < 300: #图片数量
browser.execute_script("var q=document.documentElement.scrollTop=10000")
time.sleep(1.5)
elements = browser.find_elements_by_class_name('main_img.img-hover')
count2 = 0
index = 0
print('开始下载{}'.format(word))
while count2 < 300 and index < len(elements):
url = elements[index].get_attribute('data-imgurl')
print(index, url)
try:
index += 1
name = word + '/z'+ url.split('=')[1].split(',')[0] + '.png'
count2 += 1
response = requests.get(url)
with open(name, 'wb') as f:
f.write(response.content)
except IndexError:
continue
效果图
数据收集工作就完成了。接下来需要进行数据清洗,因为并不是每张图片都是符合要求的,这里没办法,只能人工整理了。。。
God bless you!!!
下一篇博客有惊喜