只需要30行代码就可以从百度自动下载图片
大家好,我是行哥,一个专门教小学生撸Python的编程老师(小学生都能学会的编程)
这里行哥想问大家三个问题 :
你还在为批量下载表情包发愁吗?
你还在为找不到好看的图片素材在担忧吗?
你还在为各种精美壁纸的挑选和下载找遍各大网站吗?
行哥写了30行Python代码来帮你解决这个问题,现在你只要对代码进行复制、粘贴、运行三连就可以爬取你想要的图片。
如果不会python也没有问题,行哥将python代码转成可以直接使用的应用程序,文末放上爬虫exe的获取方式
no bb show your code
import os import requests import re keyWord = "杨超越" # 设置爬取图片的主题 number = 10 # 爬取图片数量 if not os.path.exists(keyWord): os.makedirs(keyWord) url = r'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq' \ r'=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd' \ r'=1497491098685%5E00_1519X735&word=' + keyWord get = requests.get(url) pciture_url = re.findall(r'objURL":"(.*?)",', get.text) a = 1 for i in pciture_url: p_type = i.split('.')[-1] a += 1 try: picture = requests.get(i, timeout=10) name = "%s/%s_%d.%s" % (keyWord, keyWord, a, p_type) with open(name, 'wb') as f: f.write(picture.content) print('第%d张图片正在下载' % a) except: print('第%d张图片下载失败!已跳过...' % a) if a >= number: break
代码逻辑主要是爬取百度图片网站的网页源码,然后从源码中提取每张图片的地址链接,使用循环保存每一张图片。
可以将这份代码直接拷贝到python编辑器里,只需要修改keyWord变量和num变量,设置成自己想爬取的图片主题和数量就可以运行下载了。爬取的结果如下图所示:
爬取代码高级版本
上面的代码只能爬取一页,因为他只对一个网址里的图片链接进行提取,如果想爬取大批量的图片,需要提取图片网站下一页的链接,这个核心代码如下,如果需要完整版代码可以后台回复【一行01】就可以获得所有代码
def get_url_one_page(url): html = requests.get(url) html.encoding = 'utf-8' html = html.text url_pic_this_page = re.findall(r'"objURL":"(.*?)",', html) url_next_page_prefix = re.findall(r'<a href="(.*?)" class="n">下一页', html) if len(url_next_page_prefix) != 0: url_next_page = 'http://image.baidu.com' + url_next_page_prefix[0] else: print("已到达最后一页!") url_next_page = None return url_pic_this_page, url_next_page
不会代码也可以使用爬虫
之前的爬虫,很多读者说没有接触过python或者爬虫,想实现功能又看不懂代码。所以行哥在这里已经将这个python代码转成可以直接使用的exe,如下图所示:
在爬取关键词里输入想要爬取的图片主题,然后输入爬取图片张数,最后选择图片保存的路径并点击开始爬取就只需要静静等待即可(网速够快的话,一般来说一秒下载一张图片)最后下载后的结果如下
end:一行行行行行,一行数据