爬取图库(二)
1. 选取网站,构造思路:
a.选取网址url:http://desk.zol.com.cn/dongman/haizeiwang/
b.分析布局,发现每页有很多小图片,然后一共有27页。我们就外循环嵌套一个range(0,26)的循环吧。
c.查看图片元素,发现每个img图片继承于’div’,class_='show listbox cc’下ul的children的a.li中。
d.获取页面调用一个函数,下载图片调用一个函数。
2.代码:
from urllib import request#引入request
from bs4 import BeautifulSoup as bs#引入BeautifulSoup重命名bs
from urllib.request import urlretrieve#引入图片链接下载方法urlretrieve
URL='http://op.hanhande.net/shtml/meitu.shtml'#网址
def Join(url):#定义获取页面函数
response=request.urlopen(url)#建立链接
html_data=response.read()#读取链接
soup=bs(html_data,'html.parser')#转码
return soup #返回soup
def GetPhotos(x): #定义获取图片函数
Locations=Join(URL).find('div',class_='show listbox cc').ul#找到每个页面固定位置装有img的上层
for pra in Locations.children:#循环
if(pra !='\n'):#防止空行报错
img_url=(pra.a.img.get('src'))#获取图片链接
x+=1#x命名增加
urlretrieve(img_url, 'G:\爬虫训练\图片\%05d.jpg'%x)#图片下载
print("正在下载第%05d张图片"%x)#格式化给图片命名
x=0#全局变量
for j in range(0,26):#递归至27页
GetPhotos(x)#调用下载第x页所有小图函数
URL=Join(URL).find('div',class_='page').a.find_next('a').find_next('a').get('href')#重置URL为下一页URL
x+=50#每一页最多允许下载的量50
print(URL)#发现第七页开始图片已损坏
4. 结果分析及进步方向:
a.图片还是选择了小图,文件小一点。*
b.图片数量有600多张算是一种进步*
c.明天加油!*
4. 图片库处理:
AndreaMosaic详情请参略此处。
5. 成果: