图片采集器
程序员文章站
2022-03-30 23:05:26
...
1. 寻找图片源
来源:百度图片
2. url 格式
百度图片默认以ajax加载,可以直接获取,有兴趣的可以自己去试
这里提供一个可以翻页的链接http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%E5%93%88%E5%A3%AB%E5%A5%87&pn=20
3. spider
import re
import os
import requests
import hashlib
class Spider(object):
def __init__(self):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Referer': 'http://image.baidu.com/search/flip?tn=baiduimage&word=%E7%BE%8E%E5%A5%B3%20%E5%9B%BE&pn=0',
'Upgrade-Insecure-Requests': '1'
}
def get_data(self, url, name):
print(url)
# 文件夹名称
folder = os.getcwd() + '/' + name
# 判断文件夹是否存在, 没有就创建
if not os.path.exists(folder):
os.mkdir(folder)
response = requests.get(url, headers=self.headers).text
url_list = re.findall(r'"thumbURL":"(.*?)"', response)
for url in url_list:
try:
response2 = requests.get(url, headers=self.headers).content
except Exception as e:
pass
else:
# 通过图片地址获取hash值,作为图片名字
hash_name = hashlib.md5(url.encode()).hexdigest()
# 持久化名字
save_name = folder + '/' + hash_name + '.jpg'
print(save_name)
# 图片持久化
with open(save_name, 'wb') as f:
f.write(response2)
def run(self):
"""
运行逻辑
:return:
"""
while True:
name = input('需要采集的图片类型>>>: ')
page = int(input('需要多少页>>>: '))
for i in range(page):
print('正在爬取第{}页============================'.format(i))
url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word={}&pn={}'.format(name, i*20)
self.get_data(url, name)
if __name__ == '__main__':
s = Spider()
s.run()
4. logo
找一个logo然后生成ico图标,作为采集器衣服
5. 打包成exe
pyinstaller -F -i spider.ico spider.py
6. 运行exe文件
上一篇: 机器学习算法(四)---决策树
下一篇: springboot集成jsp,可以打包