自从小编开始每天坚持去写博文和公众号的时候,图片素材的获取就一直困扰着我,每次都需要在百度图库中找很久很久,这种寻找图片,筛选图片的过程,大大消磨了我的精力, 以致于有时会影响到我写作灵感,后来,决心自己用python写个任意图片下载脚本,只需要输入关键字,就可以将相应的图片下载下来,接下来,小编就直接上源码。
私信小编01 获取惊喜新人大礼包 爬虫 进阶 数据分析 都有哦1
#python
#功能:根据输入的关键字,下载百度图片(https://image.baidu.com)中的图片
import requests
from lxml import etree
import re
import os
import threading
from multiprocessing import Pool
#模拟浏览器请求
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
name = input("请输入搜索的关键字:(如风景)")
#1定义函数,获取用户访问的URL
def geturl():
url = 'https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1539393278843_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word={}'.format(name)
return url
imageurl = geturl()
#2定义函数,获取目标网页源代码中图片的URL
def getimageurl():
rep = requests.get(imageurl,headers=headers)
rep.encoding='utf-8'
rep_result = rep.text
rep_re1 = r'"objURL":"(.*?)"'
re_result_jpg = re.findall(rep_re1,rep_result)
return re_result_jpg
saveimageurl = getimageurl()
#3保存图片到本地
def saveimage():
dir = name
if dir not in os.listdir():
os.makedirs(dir)
try:
for u in saveimageurl:
savename = u[-8:]
end = re.search('(.jpg|.jpeg|.png)$',savename) #搜索图片名的后缀
if end == None: #如果图片名的后缀为空
savename = savename + ".jpg" #给文件名加上jpg的后缀
req_url = requests.get(u,headers=headers).content
print("正在保存图片%s"%savename)
with open('./%s/%s'%(dir,savename),'wb') as filesave:
filesave.write(req_url)
except:
pass
#多线程下载图片,写的有问题
if __name__ =='__main__':
saveimage()
print("文件保存在当前目录下的" + name + "文件夹下面")
上面的代码其实都很简单,只要你有一点python基础,就可以照着写下来的,接着,我们就开始验证了,小编喜欢彭于晏,我们就下载他了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4822/viewspace-3146147/ ,如需转载,请注明出处,否则将追究法律责任。