冰冻三尺,非一日之寒。数据解析——xpath(3)
爬取4k图片
- 源码分析
- 文字编译
- 爬取妹子图
- 爬取真正的4k妹子图
- 注意
什么?我怎么又讲爬取图片?拜托,这可是 4k 图片,清晰度杠杠的。再说,爬取糗图算什么本事,做人要爬取的肯定是妹子图片,而且是 4k 的妹子图片,是不是很激动?放心,这次不晃你。
源码分析
首先让我们打开网页,好好欣赏一下美丽的妹子……哦不,我是说,好好的欣赏一下优美的网页源码。网址如下:https://pic.netbian.com/4kmeinv/
看,是不是优美的妹子?……额咳咳,我是说优美的源码。
很好,我们注意一下定位到的源码数据,也就是我圈的地方,这里有图片的网址和图片的标题。我们就把原标题作为我们下载后的标题。注意,这里的网址没有域名,是需要我们自己加的,也就是 “https://pic.netbian.com”。
欧克,是不是迫不及待了,让我们和小姐姐更进一步吧,咳咳,我是说,不说了,你懂的!
文字编译
import requests
from lxml import etreeif __name__ == "__main__":# UA伪装header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"}# 指定网址url = "https://pic.netbian.com/4kmeinv/"# 获取源码response = requests.get(url = url, headers = header).text# xpath 解析tree = etree.HTML(response)new_url_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@src')title_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@alt')# 测试print(new_url_ist)print()print(title_list)print(len(title_list) == len(new_url_list))
结果测试的时候发现不对了,我们的标题全都变成乱码了
再一看,哦,我们太激动忘记编译了,赶紧编译一下。
import requests
from lxml import etreeif __name__ == "__main__":# UA伪装header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"}# 指定网址url = "https://pic.netbian.com/4kmeinv/"# 获取源码response = requests.get(url = url, headers = header)response.encode = "utf-8"response = response.text# xpath 解析tree = etree.HTML(response)new_url_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@src')title_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@alt')# 测试print(new_url_list)print()print(title_list)print(len(title_list) == len(new_url_list))
这回总该可以了吧,再一看,怎么回事,还是乱码。
这是为什么?难道说所谓的 4k 美女图片只可远观不可亵玩吗?我不相信,赶紧去研究研究。正所谓,“X 是第一生产力”,我很快就研究出结果了,一般情况下,如果源码里有中文,我们可以有两种办法。一种是我们用的方法,另一种方法如下:
response = response.encode("iso-8859-1").decode("gbk")
我们再试一次
import requests
from lxml import etreeif __name__ == "__main__":# UA伪装header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"}# 指定网址url = "https://pic.netbian.com/4kmeinv/"# 获取源码response = requests.get(url = url, headers = header).textresponse = response.encode("iso-8859-1").decode("gbk")# xpath 解析tree = etree.HTML(response)new_url_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@src')title_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@alt')# 测试print(new_url_list)print()print(title_list)print(len(title_list) == len(new_url_list))
测试一下
欧克,是中文了,接着可以爬取4k妹子图片了。
爬取妹子图
import requests
from lxml import etree
import osif __name__ == "__main__":# 创建文件夹if not os.path.exists("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片"):os.mkdir("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片")# UA伪装header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"}for index in range(1, 4): # 翻三页# 指定网址if index == 1:url = "https://pic.netbian.com/4kmeinv/"else:url = "https://pic.netbian.com/4kmeinv/index_%s.html" % index# 获取源码response = requests.get(url = url, headers = header).textresponse = response.encode("iso-8859-1").decode("gbk")# xpath 解析tree = etree.HTML(response)new_url_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@src')title_list = tree.xpath('//div[@class="slist"]/ul/li/a/img/@alt')# 测试# print(new_url_list)# print()# print(title_list)# print(len(title_list) == len(new_url_list))num = len(title_list)for i in range(num):new_url = "https://pic.netbian.com" + new_url_list[i]title = title_list[i]photo = requests.get(url = new_url, headers = header).content# 保存with open("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片\\" + title + ".jpg", "wb") as fp:fp.write(photo)print(title, "下载完成!!!")print("over!!!")
完成后,我们激动地打开图片,滚烫的热血突然就冷下来了,不是说是4k高清图吗,怎么不仅是缩略图,而且画质还不行。
别着急,这可不是我骗你,是网址留了一手。
爬取真正的4k妹子图
现在我们知道了网址源码里的网址是缩略图,那么我们怎么办呢?很简单,我们点击一下会怎样?
然后我们来到了下载页面。
现在我们没有任何办法,那就试着看看现在的网页源码好了。
结果我们发现了两个图片的地址,点开,发现一个是缩略图,一个是4k妹子图。如图。
是不是又感觉热血沸腾了?嘿嘿
闲话少说,赶紧改进代码
import requests
from lxml import etree
import osif __name__ == "__main__":# 创建文件夹if not os.path.exists("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片(4k)"):os.mkdir("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片(4k)")# UA伪装header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"}for index in range(1, 4): # 翻三页# 指定网址if index == 1:url = "https://pic.netbian.com/4kmeinv/"else:url = "https://pic.netbian.com/4kmeinv/index_%s.html" % index# 获取源码response = requests.get(url = url, headers = header).textresponse = response.encode("iso-8859-1").decode("gbk")# xpath 解析tree = etree.HTML(response)# li 标签所在的列表,下载页面的网址在 li 标签内li_list = tree.xpath('//div[@class="slist"]/ul/li')for li in li_list:# 获取下载页面的网址new_url = "https://pic.netbian.com" + li.xpath('a/@href')[0]# 获取下载页面的网页源码new_response = requests.get(url = new_url, headers = header).textnew_response = new_response.encode("iso-8859-1").decode("gbk") # 编译文字# xpath 解析new_tree = etree.HTML(new_response)# 下载的地址src = "https://pic.netbian.com" + new_tree.xpath('//*[@id="img"]/img/@src')[0]# 图片标题title = new_tree.xpath('//*[@id="img"]/img/@title')[0]# 获取图片photo = requests.get(url = src, headers = header).content# 保存with open("C:\\Users\\ASUS\\Desktop\\CSDN\\数据解析\\xpath\\爬取 4k 图片\\4k图片(4k)\\" + title + ".jpg", "wb") as fp:fp.write(photo)print(title, "下载成功!!!")print("over!!!")
运行结束了,赶紧打开照片看一看,很好,这次真的是4k妹子图片了。
注意
值得注意的一点是,本来在网站下载是要充钱的,我不清楚我们这样爬是不是有问题(不知道有没有大佬能帮我解惑)。虽然我在网站的 robots 协议中没看到这不能爬。
不管怎么说,这些代码只是供学术交流,大家都收敛一些。
冰冻三尺,非一日之寒。数据解析——xpath(3)相关推荐
- python数据解析——xpath爬取文字和图片
xpath解析:最常用且最便捷高效的一种解析方式,通用性. xpath解析原理: 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中. 2.调用etree对象中的xpath方法 ...
- python爬虫数据解析xpath解析详细讲解——附有详细案例
案例③由于时间流逝,网页爬取失效了 最近考研复试,增加一个案例,爬取985211学校,并以excel表格形式存储 文章目录 1.什么是xpath 是最常用的最广泛的数据解析方式 2.xpath解析原理 ...
- 数据解析——xpath
目录 一.安装 二.xpath基本语法 2.1.依赖 2.2.xpath语法 2.3.实例 2.3.1.html文件 2.3.2.python 三.获取百度网站首页的"百度一下" ...
- 3.3 数据解析之xpath解析
数据解析–xpath解析 最常用最便捷高效的一种解析方式 1. 模块安装 pip install lxml from lxml import etree 2. 解析原理 实例化一个 etree 对象, ...
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...
- 05-xpath爬虫数据解析
Xpaht数据解析 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...
- 冰冻三尺,非一日之寒。数据解析——正则解析(1)
正则解析爬取图片 因为讲的是正则解析,而不是正则表达式,所以我就默认大家会正则表达式了.最多在这里给大家看一下正则的语法. 这也是我从B站上截图截下来的.因为我自己都是学的半懂不懂的,实在没那脸说在这 ...
- 数据解析学习笔记(正则解析、bs4解析、xpath解析)
聚焦爬虫:爬取页面中指定的页面内容. - 编码流程: - 指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储 数据解析分类: 正则 bs4 xpath(***) 数据解析原理概述 ...
- python爬虫实战之旅( 第三章:数据解析(xpath法))
上接:第三章:数据解析(bs4法) 下接:第四章:验证码识别 1.xpath解析简介 最常用且最便捷高效的一种解析方式.通用性很好 xpath解析原理 实例化一个etree的对象,且需要将被解析的页面 ...
- 爬虫之bs4、xpath数据解析(案例—scrapy获取菜鸟HTML页面数据)
文章结构 1.爬虫概念简介 2.爬虫的流程 3.数据解析 (1)bs4解析 (I)根据标签名查找 soup.a (II)获取属性 soup.a[attr] (III)soup.a.text 获取响应文 ...
最新文章
- Nginx下配置Http Basic Auth保护目录
- 经典推荐:《Silverlight揭秘》和《ASP.NET 3.5高级程序设计(第2版)》
- 在数据库SQl中拼串
- 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)
- python操作系统-PYTHON-操作系统基础
- C++中auto的用法,说明的是变量的寿命
- .NET对象克隆的深究(转)
- 圆桌会议 HDU - 1214(规律+模拟队列)
- Oracle JDBC中的PreparedStatement占位符过多
- php背景图片透明度,css如何使用opacity属性给背景图片加透明度(代码)
- 自己动手系列——实现一个简单的ArrayList
- 不再依赖A*,利用C++编写全新寻路算法
- 「Leetcode」206.反转链表:听说过两天反转链表又写不出来了?
- Fiddler使用过程中无法抓取https的解决方法
- 关于Nginx跨域配置的一些问题,详解如何正确的配置跨域
- laas和saas_什么是IaaS,PaaS和SaaS及其区别
- 004-2018-09-06 列表
- opporeno3详细参数_opporeno3pro参数配置详情 OPPO Reno3系列明天发布(图文)
- java 监听控制台输入
- 新浪微博:向左走还是向右走