前言
这是一个比较简单的爬虫脚本,可以根据用户输入的关键词搜索下载指定数量的图片,比如你喜欢某个明星则输入名字:
脚本自动检测出图片数量,并可以指定下载图片数量,当然也要输入一个文件夹的名字,图片会全部存入这个文件夹
然后就会自动开始下载,而且还会打印进度哦
下面直接贴上源代码,如果有不懂的小伙伴可以私信我哦~~
首先先导入我们需要的库
import reimport requestsfrom urllib import errorfrom bs4 import BeautifulSoupimport os
定义一些全局变量
num = 0 numPicture = 0file = ''List = []
检测图片数量
def Find(url): global List print('正在检测图片总数,请稍等.....') t = 0 i = 1 s = 0 while t < 1000: Url = url + str(t) try: Result = requests.get(Url, timeout=7) except BaseException: t = t + 60 continue else: result = Result.text pic_url = re.findall('"objURL":"(.*?)",', result, re.S) # 先利用正则表达式找到图片url s += len(pic_url) if len(pic_url) == 0: break else: List.append(pic_url) t = t + 60 return s
下载图片
def dowmloadPicture(html, keyword): global num pic_url = re.findall('"objURL":"(.*?)",', html, re.S) # 先利用正则表达式找到图片url print('找到关键词:' + keyword + '的图片,即将开始下载图片...') for each in pic_url: print('正在下载第' + str(num + 1) + '张图片,图片地址:' + str(each)) try: if each is not None: pic = requests.get(each, timeout=7) else: continue except BaseException: print('错误,当前图片无法下载') continue else: string = file + r'' + keyword + '_' + str(num) + '.jpg' fp = open(string, 'wb') fp.write(pic.content) fp.close() num += 1 if num >= numPicture: return
程序入口
if __name__ == '__main__': # 主函数入口 word = input("请输入搜索关键词(可以是人名,地名等): ") print('经过检测%s类图片共有%d张' % (word, tot)) numPicture = int(input('请输入想要下载的图片数量 ')) file = input('请建立一个存储图片的文件夹,输入文件夹名称即可') y = os.path.exists(file) if y == 1: print('该文件已存在,请重新输入') file = input('请建立一个存储图片的文件夹,)输入文件夹名称即可') os.mkdir(file) else: os.mkdir(file) t = 0 tmp = url while t < numPicture: try: url = tmp + str(t) result = requests.get(url, timeout=10) print(url) except error.HTTPError as e: print('网络错误,请调整网络后重试') t = t + 60 else: dowmloadPicture(result.text, word) t = t + 60 print('当前搜索结束,感谢使用') print('猜你喜欢')
都看到这里了给个赞吧~~~