python,分析网页,使用 bs4和requests 爬取网页指定图片
阅读之前先保证会使用python并且了解html前端结构
首先打开
目标网站
我们可以看到一个动漫角色的图片,现在我们要利用python程序来保存这张图片到本地。
1.右键图片
选择审查元素(有些浏览器叫做检查)
然后Ctrl+shift+c,打开选取元素模式,点击图片即可找到下图的位置
可看到这张图片,也就是网页的结构
我们要提取的图片在body->div->div->div->img中。
因为这个img有id,所以我们很容易定位
标签img,id=“PicBigBtn”里的src值即可,
但是我们将这个图片复制打开,发现他的像素很低,所以我们判断他不是我们要找的图片。
回到目标网站
右上角可以看到放大,我们点击放大,看到了清晰的图片
这时再次审查元素。
然后Ctrl+shift+c,打开选取元素模式,在图片上的时候我们发现一个翻页div遮挡了图片这时候我们来到左下高亮部分右键。
删除元素。删除后再次选取元素模式,点击图片
这样就找到我们要的img了,复制这个img的地址打开新页面,我们可以看到清晰的图片
这张图片我们可以看出,很容易索引。
因为id是唯一的,我们只需要寻找img标签id等于layerDeskPic即可,
分析完了,接下来我们来到我们的python
import requestsfrom bs4 import BeautifulSoup
导入我们的两个包
写好我们的代码
import requestsfrom bs4 import BeautifulSoupdef pachong():url = "http://desk.zol.com.cn/bizhi/755_8386_2.html" # 目标网站html = requests.get(url) # requests的get方法,参数填写url即可返回网页全部内容soup = BeautifulSoup(html.content, "html.parser") # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。# (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)image_html = soup.find("img", id="layerDeskPic").attrs["src"] # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)the_image = requests.get(image_html) # 再次使用requests的get方法,参数为图片的网址。with open("图片.jpg", "wb+") as f:f.write(the_image.content) # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)if __name__ == '__main__':pachong()
运行发现得到图片,一个1x1像素的图片…
然后我们将后边注释掉
import requestsfrom bs4 import BeautifulSoupdef pachong():url = "http://desk.zol.com.cn/bizhi/755_8386_2.html" # 目标网站html = requests.get(url) # requests的get方法,参数填写url即可返回网页全部内容soup = BeautifulSoup(html.content, "html.parser") # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。# (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)image_html = soup.find("img", id="layerDeskPic").attrs["src"] # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)print(image_html)# the_image = requests.get(image_html) # 再次使用requests的get方法,参数为图片的网址。# with open("图片.jpg", "wb+") as f:# f.write(the_image.content) # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)if __name__ == '__main__':pachong()
输出查看内容,内容是《https://icon.zol-img.com.cn/article/slideNew/blank.gif》
这显然有误,因此我们猜测是网页结构发生了变化,我们再回到目标网站
先审查元素,然后用元素选取选择右上角的放大按钮
可见图片的网址是这个
我们点一下这个按钮放大,然后关闭放大后的图片
可以对比发现,这个值变了,具体怎么变的我们不需要深究。
我们比较这两个值发现,变的只有中间的分辨率数字
https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/01/0F/ChMkJlbKwqqIJUCGAAHop_ytZA4AALGrQN-1PwAAei_545.jpg
http://desk.fd.zol-img.com.cn/t_s1920x1080/g5/M00/01/0F/ChMkJlbKwqqIJUCGAAHop_ytZA4AALGrQN-1PwAAei_545.jpg
因此我们只需要获取第一个网址,对字符串960x600c5替换为1920x1080即可
import requestsfrom bs4 import BeautifulSoupdef pachong():url = "http://desk.zol.com.cn/bizhi/755_8386_2.html" # 目标网站html = requests.get(url) # requests的get方法,参数填写url即可返回网页全部内容soup = BeautifulSoup(html.content, "html.parser") # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。# (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)image_html = soup.find("img", id="bigImg").attrs["src"] # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)image_html = change(image_html) # 调用change函数the_image = requests.get(image_html) # 再次使用requests的get方法,参数为图片的网址。with open("图片.jpg", "wb+") as f:f.write(the_image.content) # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)def change(image_html):return image_html.replace("960x600c5", "1920x1080") # 替换字符串if __name__ == '__main__':pachong()
改写后的代码,运行,我们发现已经可以正常使用了,在程序的目录下的图片.jpg即是我们爬的图片!
python,分析网页,使用 bs4和requests 爬取网页指定图片相关推荐
- Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测
Crawl:利用bs4和requests爬取了国内顶级某房源平台(2020年7月2日上海二手房)将近30*100多条数据并进行房价分析以及预测 目录 利用bs4和requests爬取了国内顶级某房源平 ...
- python正则表达式爬取网页数据_常用正则表达式爬取网页信息及HTML分析总结
Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取 标签之间内容2.获取 超链接之间内容3.获取URL最后一个参数命名图片或传递参数4.爬取网页中所有URL链接5.爬取网页标题titl ...
- python 网页爬虫nike_python网络爬虫-爬取网页的三种方式(1)
0.前言 0.1 抓取网页 本文将举例说明抓取网页数据的三种方式:正则表达式.BeautifulSoup.lxml. 获取网页内容所用代码详情请参照Python网络爬虫-你的第一个爬虫.利用该代码获取 ...
- python爬虫(一):正则表达式爬取网页文本
文章目录 1 正则表达式 2 网页文本爬取 2.1 单页文本 2.2 多页文本 2.2.1 演示文本 2.2.2 文本信息获取 3 实战记录 3.1 网页纯文本处理 3.1.1 常规网页 3.1.2 ...
- python实战项目一:requests爬取淘宝图片
按关键词爬取淘宝的图片 ●实验过程遇到的问题: 1. 一开始我没注意,将文件名写为requests.py,但是运行时却出现了这个错误:module 'requests' has no att ...
- python超详细零基础 bs4解析之爬取唯美图片
文章目录 前言 前言 本篇文章主要介绍使用bs4解析来爬取某网站上的唯美高清大图,涉及到的零碎知识较多,详细易懂,适合新手小白爬虫入门. 思路如下: ①拿到主页面的源代码,然后提取到子页面的链接地址h ...
- python爬网页源码_python爬虫爬取网页的内容和网页源码不同?
可以看到这里id为k_total的元素值不同,爬出来是1,网页源码是55. 附还未完成的代码:import requests from bs4 import BeautifulSoup import ...
- py3+requests+urllib+bs4+threading,爬取斗图图片
实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/uncleyong/p/6892688. ...
- python外国网站爬虫_python 网络爬虫-爬取网页外部网站
前言 上一篇中我们在维基百科的内部网站上随机跳转进入文章类网页,而忽视外部网站链接.本篇文章将处理网站的外部链接并试图收集一些网站数据.和单个域名网站爬取不同,不同域名的网站结构千差万别,这就意味我们 ...
最新文章
- 教你用机器学习匹配导师 !(附代码)
- jquery form 序列化
- bug death march
- HDU 5527:Too Rich(DFS+贪心)***
- html5--7-33 阶段练习5
- 使用网络存储SAN和NAS
- MySQL(七)联结表
- HTML5能为我们带来什么?(一)
- 老师一定没有教!9个数学速算技巧!看到第1个就跪了!
- UNICODE十六进制数组转成中英文
- kadane算法_使用KADANE的算法求最大子阵列和
- 现代操作系统原理与实践03:操作系统结构
- VScode输出中文乱码的解决方法------测试过可以用
- 论文赏析[AI18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
- 二十一天学通C语言:C语言中指针排序
- javascript 原型链实现继承简单例子
- Java基础——集合List+Set+泛型+Map
- [面试题] 从抽屉找东西的概率学问题
- 接入小程序客服(java版教程),处理第一次主动推送会话超时问题
- macOS硬盘如何格式转换?用Tuxera NTFS就够了!
热门文章
- 计算机考试记不住题目,驾考科目一口诀,科一题目太多记不住?快来看看这些技巧...
- MacOS开发-用命令行压缩文件
- 计算机系统分盘作用,电脑为什么要分区,分区的好处
- Alpha阶段敏捷冲刺⑥
- GO学习笔记1.5:第一个GO项目常见问题
- 如何把带图片html转为doc,教您一招:如何将图片里面的文字转成word格式并能编辑...
- NIST的安全内容自动化协议(SCAP)以及SCAP中文社区简介
- CF 1567 C. Carrying Conundrum(思维)
- 电容器功率密度和能量密度
- 使用CSS展现出各行星轨道