赞
踩
今天,我们用Python来爬取4K图片的数据,并保存图片。
首先打开网址:http://pic.netbian.com/4kfengjing/
打开F12开发者工具,elements栏中定位到图片信息。其中我们可以看出,所有的图片信息都是在一个< div>标签中,并且该div拥有属性class=“slist”,每一个< li >标签内容对应一张图片信息,只要从< li >标签信息中获取到src属性值、alt属性值即可当做图片的名称和访问地址:
src="/uploads/allimg/180325/192357-1521977037fd66.jpg",
alt=“劳特布龙嫩山谷4k壁纸”。
地址其中一张图片,发现图片访问地址为:http://pic.netbian.com/uploads/allimg/180325/192357-1521977037fd66.jpg,比我们之前获得的src要多出一部分字符串“http://pic.netbian.com”,这里我们需要用到字符串的拼接,组成一个完整的图片下载地址
图片下载成功后,存储到本地文件夹中保存。
实现代码如下:
import requests from lxml import etree import os if __name__=="__main__": # URL地址 url = 'http://pic.netbian.com/4kfengjing/' headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36' } # 创建文件夹保存图片数据 if not os.path.exists('./data/4kPic'): os.mkdir('./data/4kPic') # 爬取页面源数据 response = requests.get(url=url,headers=headers) # response.encoding = 'gbk' page_text = response.text # 数据解析:src属性值、alt属性值 tree = etree.HTML(page_text) li_list = tree.xpath('//div[@class="slist"]/ul/li') for li in li_list: # 获取图片的src属性值 img_src = 'http://pic.netbian.com/'+ li.xpath('./a/img/@src')[0] # 获取图片的alt属性值 img_name = li.xpath('./a/img/@alt')[0]+'.jpg' img_name = img_name.encode('iso-8859-1').decode('gbk') # print(img_name,img_src) # 访问图片地址 img_data = requests.get(url=img_src,headers=headers).content # 持久化存储图片数据 img_path = 'data/4kPic/'+img_name with open(img_path,'wb') as fp: fp.write(img_data) print(img_name,'打印成功!!!')
运行结果如下:
当前页面的图片爬取成功后,如果想要爬取所有页面的图片该如何操作了?比如这里总共有190页的数据
我们先尝试一下翻页,看看页面URL变化
URL的地址变成http://pic.netbian.com/4kfengjing/index_3.html,那么我们是不是只要把index_后面的数字参数化,然后循环抓取页面的数据就可以了。这里我们可以使用一个for循环来获取页数,然后填入URL地址中就可以了,代码实现如下:
url = 'http://pic.netbian.com/4kfengjing/index_%d.html'
for pageNum in range(1,191):
new_url = format(url%pageNum)
下面显示所有代码:
import requests from lxml import etree import os if __name__=="__main__": # URL地址 # url = 'http://pic.netbian.com/4kfengjing/' # 创建文件夹保存图片数据 if not os.path.exists('./data/4kPic'): os.mkdir('./data/4kPic') url = 'http://pic.netbian.com/4kfengjing/index_%d.html' for pageNum in range(1,191): new_url = format(url%pageNum) headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36' } # 爬取页面源数据 response = requests.get(url=new_url, headers=headers) # response.encoding = 'gbk' page_text = response.text # 数据解析:src属性值、alt属性值 tree = etree.HTML(page_text) li_list = tree.xpath('//div[@class="slist"]/ul/li') for li in li_list: # 获取图片的src属性值 img_src = 'http://pic.netbian.com/' + li.xpath('./a/img/@src')[0] # 获取图片的alt属性值 img_name = li.xpath('./a/img/@alt')[0] + '.jpg' img_name = img_name.encode('iso-8859-1').decode('gbk') # print(img_name,img_src) # 访问图片地址 img_data = requests.get(url=img_src, headers=headers).content # 持久化存储图片数据 img_path = 'data/4kPic/' + img_name with open(img_path, 'wb') as fp: fp.write(img_data) print(img_name, '打印成功!!!')
运行结果如下:
所有图片都保存到文件夹4kPic中
现在我们使用Python爬取页面所有4K图片的需求算是实现了!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。