既然是中秋了,虽然简书陆陆续续更新,但是中秋肯定是要送一波福利的!!!但是思来想去,送月饼是不是太俗气了。重点来了!
这次小编用python爬虫教你怎么爬取网站图(fu)片(li),看图看图,画风是这样子的~
美女真美,哈哈哈.png刚一会会,小编已经下载了辣么多套图了,想要的话,私信回复“中秋快乐”四个字发你哦~
这么多套图哇~.png话说回来,我们肯定不是直接要图片的,我们是要学习源码的!告诉小编对不对!
好!听到你的回答,小编很开心(哈哈哈),我们接下来看一看代码的实现
首先,import库
import requests
import os
from bs4 import BeautifulSoup
在指定位置创建文件夹,这里是在 D:./meinvtupian/ 这个位置创建文件夹,同时将文件夹地址作为路径返回。
def create_dir(path):
'''
:param path: 给定一个文件名
:return: 在./image下创建文件夹并返回路径
'''
url = "D:./meinvtupian/" + path
#判断当前文件夹是否存在
if os.path.exists(url):
print("文件夹已经存在")
else:
os.makedirs(url)
print("%s创建成功"%url)
#将当前文件夹作为路径返回
return url
接下来自定义一个用 requests 库访问网页的函数,返回网站给出的响应(responses)。
def get_page(url):
'''
:param url: 访问地址
:return: 返回response
'''
Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
headers = {"User-Agent": Agent}
r = requests.get(url,headers=headers)
return r
下一步便是获取图集地址,每一组套图都有单独的网址,我们需要对响应部分进行解析,然后分解出所需要的套图首地址。
def get_pictures_url(url):
'''
:param url: 优美网地址
:return: 无返回
'''
for i in range(5,50):
r = get_page(url +str(i)+'.htm')
if r.status_code == 200:
soup = BeautifulSoup(r.content)
pictures = soup.find('div',class_ = "TypeList")
pictures_url = pictures.find_all("a",class_ = "TypeBigPics")
for pictures_dress in pictures_url:
#print(pictures_dress['href'])
get_picture_url(pictures_dress['href'],create_dir(pictures_dress.find("div", class_ ="ListTit").string))
else:
continue
取得套图首地址后,便可以根据这个地址再次访问服务器,获取单个图片的地址,此时执行写入操作便可以完成下载图片的任务啦这么快,紧不紧张,刺不刺激
def get_picture_url(url,dress):
'''
:param url: 图集地址
:param dress: 图片存储地址
:return: 无返回
'''
for i in range(1,50):
#根据网页地址规则设定新的url
if i != 1:
r = get_page(url[:-4] + '_' + str(i) + '.htm')
else:
r = get_page(url)
if r.status_code == 200:
soup = BeautifulSoup(r.content)
picture_dress = soup.find("div",class_ = "ImageBody" )
with open(dress +'/'+ picture_dress.find("img")['alt']+'('+str(i)+')'+'.jpg', 'wb') as f:
if picture_dress.find("img")['src']:
f.write(get_page(picture_dress.find("img")['src']).content)
print("%s已存储" % (picture_dress.find("img")['alt'] + str(i)))
else:
print("-------------------------------------")
break
最后抛出主函数执行。
if __name__ == "__main__":
get_pictures_url("http://www.umei.cc/meinvtupian/")
这里的标签页当然还可以自己修改,下载你们想要的专题妹子~
网友评论