爬取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)相关推荐

  1. python数据解析——xpath爬取文字和图片

    xpath解析:最常用且最便捷高效的一种解析方式,通用性. xpath解析原理: 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中. 2.调用etree对象中的xpath方法 ...

  2. python爬虫数据解析xpath解析详细讲解——附有详细案例

    案例③由于时间流逝,网页爬取失效了 最近考研复试,增加一个案例,爬取985211学校,并以excel表格形式存储 文章目录 1.什么是xpath 是最常用的最广泛的数据解析方式 2.xpath解析原理 ...

  3. 数据解析——xpath

    目录 一.安装 二.xpath基本语法 2.1.依赖 2.2.xpath语法 2.3.实例 2.3.1.html文件 2.3.2.python 三.获取百度网站首页的"百度一下" ...

  4. 3.3 数据解析之xpath解析

    数据解析–xpath解析 最常用最便捷高效的一种解析方式 1. 模块安装 pip install lxml from lxml import etree 2. 解析原理 实例化一个 etree 对象, ...

  5. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  6. 05-xpath爬虫数据解析

    Xpaht数据解析 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...

  7. 冰冻三尺,非一日之寒。数据解析——正则解析(1)

    正则解析爬取图片 因为讲的是正则解析,而不是正则表达式,所以我就默认大家会正则表达式了.最多在这里给大家看一下正则的语法. 这也是我从B站上截图截下来的.因为我自己都是学的半懂不懂的,实在没那脸说在这 ...

  8. 数据解析学习笔记(正则解析、bs4解析、xpath解析)

    聚焦爬虫:爬取页面中指定的页面内容. - 编码流程: - 指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储 数据解析分类: 正则 bs4 xpath(***) 数据解析原理概述 ...

  9. python爬虫实战之旅( 第三章:数据解析(xpath法))

    上接:第三章:数据解析(bs4法) 下接:第四章:验证码识别 1.xpath解析简介 最常用且最便捷高效的一种解析方式.通用性很好 xpath解析原理 实例化一个etree的对象,且需要将被解析的页面 ...

  10. 爬虫之bs4、xpath数据解析(案例—scrapy获取菜鸟HTML页面数据)

    文章结构 1.爬虫概念简介 2.爬虫的流程 3.数据解析 (1)bs4解析 (I)根据标签名查找 soup.a (II)获取属性 soup.a[attr] (III)soup.a.text 获取响应文 ...

最新文章

  1. Nginx下配置Http Basic Auth保护目录
  2. 经典推荐:《Silverlight揭秘》和《ASP.NET 3.5高级程序设计(第2版)》
  3. 在数据库SQl中拼串
  4. 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)
  5. python操作系统-PYTHON-操作系统基础
  6. C++中auto的用法,说明的是变量的寿命
  7. .NET对象克隆的深究(转)
  8. 圆桌会议 HDU - 1214(规律+模拟队列)
  9. Oracle JDBC中的PreparedStatement占位符过多
  10. php背景图片透明度,css如何使用opacity属性给背景图片加透明度(代码)
  11. 自己动手系列——实现一个简单的ArrayList
  12. 不再依赖A*,利用C++编写全新寻路算法
  13. 「Leetcode」206.反转链表:听说过两天反转链表又写不出来了?
  14. Fiddler使用过程中无法抓取https的解决方法
  15. 关于Nginx跨域配置的一些问题,详解如何正确的配置跨域
  16. laas和saas_什么是IaaS,PaaS和SaaS及其区别
  17. 004-2018-09-06 列表
  18. opporeno3详细参数_opporeno3pro参数配置详情 OPPO Reno3系列明天发布(图文)
  19. java 监听控制台输入
  20. 新浪微博:向左走还是向右走

热门文章

  1. Vscode 如何配置debug
  2. Java的加减乘除方法
  3. ubuntu无法进入图形界面,停留在【ok】启动界面
  4. c++实训 数组之犯二程度 与队列变换
  5. iphone手机配置qq邮箱服务器设置,在iPhone中如何设置qq邮箱
  6. 抖音短剧本应该怎么写
  7. Planning with Goal-Conditioned Policies读书笔记
  8. 机器学习小白入门--统计学知识 Z-Value for Proportions
  9. 树莓派python摄像头文字识别_古德微树莓派摄像头文字识别
  10. 比较器应用一:滞回比较器