python爬虫:爬取图片素材案例
注:本文仅作参考所有操作均为示范,如有侵权请联系删除
目录
前言
一、查看robots.txt协议
二、具体实现
1.引入库
2.分析页面
3.代码实现
4.总代码
5.实现效果
总结
前言
本文演示案例网站见代码
示例版块为“4k美女”,选此版块原因只因编者个人爱好,无不良导向。
一、查看robots.txt协议
在使用爬虫之前,务必首先查看目标网站的robots.txt,规范使用爬虫工具。
该网站爬虫协议如图
更多有关robots.txt协议可查看该博主文章:(6条消息) 查看网站的爬虫协议,简单介绍爬虫协议robots.txt,避免爬虫爬的好,牢饭吃得早(保姆级图文)_爬虫协议怎么看_发现你走远了的博客-CSDN博客
二、具体实现
1.引入库
代码如下:
import requests from lxml import etree import os
2.分析页面
首先观察页面,可以发现当前页面图片有限,若想查看更多图片则需执行翻页操作。通过实际操作不难发现,不同页面的url
其区别无非是_后的数字不同,其数字对应相应页面,而首页无_下划线,故选择从第二页往后爬起(这里我偷懒了我承认)。
清楚这一点后即可正式开始对图片src进行分析。
老规矩,右键——检查,可发现所有图片位于class为slist的div/ul/li中,那么以此为xpath即可获得当前页面图片所在li的一个列表
tree = etree.HTML(page_text)
image_list = tree.xpath('//div[@class="slist"]/ul/li')
再往下分析,展开li/a/img,可发现img两个属性"src"与"alt",对src进行抓取即可获得图片地址,对alt进行抓取即可获得图片的名称。
for li in image_list:image_src = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]image_name = li.xpath('./a/img/@alt')[0] + '.jpg'
理论存在,实践开始!
3.代码实现
首先手动进行请求头的伪装:
if __name__ == "__main__":headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57'}
还记得要对不同页面发送请求吗?在这里我们通过一个for循环来实现:
for i in range(2, 66):url = f'https://pic.netbian.com/4kmeinv/index_{i}.html'response = requests.get(headers=headers, url=url)response.encoding = 'gbk' # 手动规定编码格式page_text = response.texttree = etree.HTML(page_text)image_list = tree.xpath('//div[@class="slist"]/ul/li')
拿到当前页面的li列表后,就可以对它进行遍历分别拿到每张图片的信息,但是先别急 ,在此之前我们需要先确保图片存储到哪个文件夹中,在这里通过os实现:
if not os.path.exists('./4k美女(测试爬虫用!!!)'):os.mkdir('./4k美女(测试爬虫用!!!)')
(我承认我心虚了,在文件夹名中标明测试爬虫用,被别人看到就不好了)
接下来就可以遍历列表,拿到img的两个属性src,alt去补全图片地址与名称
for li in image_list:image_src = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]image_name = li.xpath('./a/img/@alt')[0] + '.jpg'image_data = requests.get(url=image_src, headers=headers).contentimage_path = '4k美女(测试爬虫用!!!)/' + image_name
最后通过拿到的信息将图片以指定名称存入文件夹,并在成功存储后打印一条通过信息来获取进度。
with open(image_path, 'wb') as f:f.write(image_data)print(f"{image_name}下载成功")
4.总代码
总代码如下:
import requests
from lxml import etree
import osif __name__ == "__main__":headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57'}for i in range(2, 66):url = f'https://pic.netbian.com/4kmeinv/index_{i}.html'response = requests.get(headers=headers, url=url)response.encoding = 'gbk' # 手动规定编码格式page_text = response.texttree = etree.HTML(page_text)image_list = tree.xpath('//div[@class="slist"]/ul/li')if not os.path.exists('./4k美女(测试爬虫用!!!)'):os.mkdir('./4k美女(测试爬虫用!!!)')for li in image_list:image_src = 'https://pic.netbian.com/' + li.xpath('./a/img/@src')[0]image_name = li.xpath('./a/img/@alt')[0] + '.jpg'image_data = requests.get(url=image_src, headers=headers).contentimage_path = '4k美女(测试爬虫用!!!)/' + image_namewith open(image_path, 'wb') as f:f.write(image_data)print(f"{image_name}下载成功")
5.实现效果
(背景有点花哨不好意思)
总结
进行爬虫活动前一定先确保查看robots.txt协议,并确保爬取的行为正当性,以免可刑。
更多关于爬虫内容请点击编者头像,就会发现其实就写了这一个
python爬虫:爬取图片素材案例相关推荐
- 【大学生课程实践】实操:使用Python爬虫爬取图片
实操:使用Python爬虫爬取图片 参考链接: 源码部署 安装源码中的爬虫库 创建 images文件 参考链接: 本博客作为大佬博客学习笔记记录 参考链接:孩子说"你没看过奥特曼" ...
- python爬虫爬取图片无法打开_半小时入门python爬虫爬下网站图片,不能再简单了...
阅读本文大约需要2分钟 本文旨在为没有爬虫基础的,偶尔想爬虫爬一下某个网站上的图片的初学者使用,如果你已经是对爬虫很熟悉了,下面依然有你感兴趣的东西. 我最近也才正儿八经学习了下爬虫,出于某种需要爬一 ...
- Python爬虫爬取图片
** Python爬虫爬取网站指定图片(多个网站综合经验结论分享) ** 我想以这篇文章来记录自己学习过程以及经验感受,因为我也是个初学者.接下来我将分享几个我爬取过的图片网站,给大家们分享下自己的方 ...
- [python爬虫] 爬取图片无法打开或已损坏的简单探讨
本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...
- python爬虫爬取图片的简单步骤和实现代码
目录 1. 如何获取网页信息 1). 直接从网络读取 2). 先将网页源码保存到本地,再读取 2. 分析获取到的网页信息,提取需要的信息(图片地址) 3. 使用request将图片保存到本地以及会碰到 ...
- 利用python爬虫爬取图片并且制作马赛克拼图
想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =. 首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我 ...
- python爬虫 爬取图片
图片 爬取单张图片 #网址:https://pic.netbian.com/ 我们爬取:https://pic.netbian.com/4kmeinv/ from lxml import etree ...
- python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...
Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...
- python爬虫爬取图片代码_python爬虫实战 爬取天极图片
学习爬虫个人的意见是直接实战效果会很好 不要等全学完requests ,正则表达式,BeautifulSoup等再来实际操作.其实很多实战我们并不会用到requests库,BeautifulSoup, ...
最新文章
- docker多主机网络方案
- matlab在linux下面的相对路径的写法
- 极验创始人吴渊:恶意流量威胁新趋势,洞察网络黑产3大核心本质
- Python学习【第1篇】:Python简介以及入门
- 7 SD配置-企业结构-定义-定义信贷控制范围
- Casper Labs成为数据隐私协议联盟的创始成员
- QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore
- 使用WSDL工具生成C#使用的WebService声明文件
- 金融冬天 IT产业如何应对危险与机遇
- SAP MM 顾问在实施项目工作中的苦逼和优势
- pycharman使用小结
- 分享一个好用无广告无水印的绿色录屏软件
- python opencv实现三角测量(triangulation)
- java毕业设计智能小区物业管理系统Mybatis+系统+数据库+调试部署
- 大学必须掌握的软件基础课程
- 计算机辅助绘图 选修,计算机辅助绘图(CAD)教学大纲.doc
- 解决hotmail邮箱无法登陆问题
- 春季舞蹈比赛1 c++
- 《SRE生存指南》金句分享
- oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc