Python爬取系列妹子图实战总结(程序员节福利哟)
Python爬取系列妹子图(福利哟~~~)
用到的模块:requests 和 lxml中的html
今天呢是10月24日,天气一如既往的好,也是传说中的程序员节,来爬波妹子图岂不美哉!!!
开始操作:
我们今天的实战网页就是这个妹子图的首页内(包括详情页)所有页数的图片,我们打开F12审查元素,先获得首页的所有页面的数量,如下图所示:
获得这个数字可以用xpath来实现:
n = res.xpath('//div[@class="nav-links"]/a[@class="page-numbers"][4]/text()')
可以为这个操作定义一个方法:
def get_alln(self):#返回系列中所有页面总数response = requests.get(self.url,headers = self.header)response.encoding = "utf-8"res = html.fromstring(response.text)n = res.xpath('//div[@class="nav-links"]/a[@class="page-numbers"][4]/text()')#提取总页面数量return n[0]
返回即可
接下来呢,就是获得其中一个页面详情页的url了,通过审查元素我们可以发现:
详情页的url都在 li 标签中,提取该url如下:
all_img_urllist = res.xpath('//div[@class="postlist"]/ul[@id="pins"]/li/a/@href')
将其所有详情页url都放到一个列表中,方便以后的访问,封装成函数如下:
def get_url(self,n):#单个页面中详情页地址allurl = "https://www.mzitu.com/page/{n}/".format(n = n)#n为第几个页面response = requests.get(self.url, headers=self.header)response.encoding = "utf-8"res = html.fromstring(response.text)all_img_urllist = res.xpath('//div[@class="postlist"]/ul[@id="pins"]/li/a/@href')return all_img_urllist
现在我们已经得到单个页面的所有详情页的url了,接下来就是对详情页动手啦!!!
对于详情页,我们还是做和首页一样的操作
1.获得详情页的总页数量
2.提取详情页图片的url数据
第一步,我们随便可以进入一个详情页,通过审查元素我们可以发现如下数据:
也就是说详情页中一共有62个页面同时也对应着62张图片,当然有些可能被和谐了导致没有那么多图片,这点我们可以进行过滤的,提取页面数据如下:
n = res.xpath('//div[@class="pagenavi"]/a[5]//text()')
第二部的得到图片url位置如下:
提取代码:
returl = res.xpath('//div[@class="main-image"]/p/a/img/@src')
以上操作就是对首页的单个页面的单个详情页的单个图片进行提取url操作,如果想要对首页的多个页面的多个详情页的多个图片提取图片url筛选操作只需加几个循环即可!
总的来说,python爬虫的步骤其实仅仅是获得数据列表、分析数据、提取数据、保存数据这几个步骤,看了我之前的几篇文章的朋友应该对requests的使用有了深刻理解,那么接下来的文章我会用爬虫界的扛把子scrapy框架实现爬虫操作,喜欢的朋友丢一个小赞赞哟~~~
最后的最后,上代码!!:
import requests
from lxml import html#Mr.离class Meizitu():def __init__(self,url):self.url = urlself.header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}self.count = 1def get_alln(self):#返回系列中所有页面总数response = requests.get(self.url,headers = self.header)response.encoding = "utf-8"res = html.fromstring(response.text)n = res.xpath('//div[@class="nav-links"]/a[@class="page-numbers"][4]/text()')#提取总页面数量return n[0]def get_url(self,n):#单个页面中详情页地址allurl = "https://www.mzitu.com/page/{n}/".format(n = n)response = requests.get(self.url, headers=self.header)response.encoding = "utf-8"res = html.fromstring(response.text)all_img_urllist = res.xpath('//div[@class="postlist"]/ul[@id="pins"]/li/a/@href')return all_img_urllistdef get_imgurl(self,aurl):#详情页中图片地址response = requests.get(aurl, headers=self.header)response.encoding = "utf-8"res = html.fromstring(response.text)n = res.xpath('//div[@class="pagenavi"]/a[5]//text()')print("本详情页共有图片:",n[0])imgurl_list = []for i in range(int(n[0])):imgurl = aurl+"/{n}".format(n = i+1)imgurl_list.append(self.get_burl(imgurl))print(imgurl_list)return imgurl_listdef get_burl(self,burl):#返回当前详情页的图片地址response = requests.get(burl, headers=self.header)response.encoding = "utf-8"res = html.fromstring(response.text)returl = res.xpath('//div[@class="main-image"]/p/a/img/@src')print("图片地址为:",returl)if returl!=[]:return returldef save_img(self,imgurl_list):#保存图片header2 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36","Referer":"https://www.mzitu.com/"}for img in imgurl_list:if img == None:continueresponse = requests.get(img[0],headers=header2).contentwith open("D:\英雄时刻\妹子图\{count}.jpg".format(count=self.count),"wb") as f:f.write(response)self.count += 1print(self.count," is ok")def start(self):#开始n = self.get_alln()for i in range(int(n)):all_img_urllist = self.get_url(i+1)print(all_img_urllist)for url in all_img_urllist:#处理详情页图片数据imgurl_list = self.get_imgurl(url)print("图片url列表:",imgurl_list)self.save_img(imgurl_list)if __name__ == '__main__':url = "https://www.mzitu.com/"img = Meizitu(url)img.start()
Python爬取系列妹子图实战总结(程序员节福利哟)相关推荐
- python爬取图片源码_半次元图片爬取-python爬取半次元图片源码下载-西西软件下载...
python爬取半次元图片源码,由大神自制的python爬取工具,本源码针对半次元图片平台,可以爬取最新的网站图片资源,支持自定义保存目录,非常方便,需要requests库的支持,想要相关源码资源的朋 ...
- Python爬取暴走漫画动态图
最近再之乎上看到比较好的Python爬虫教程,看过之后对爬虫有了大概的了解,随后自己写了个爬取暴走漫画动图的爬虫练练手,另外附上Python爬虫教程的原始链接,完整看一遍教程之后还是会有很多收获的 源 ...
- python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解
这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...
- python 知乎美女_知乎大神教你用Python爬取网站美女图,附代码!
都知道Python的抓取功能强大,可以帮我们从海量的数据中爬取所需要的进行分析.下面,就给大家分享知乎大神怎么用Python爬取高颜值美女! 1.数据源 知乎话题『美女』下所有问题中回答所出现的图片 ...
- Python爬取书包网文章实战总结
python爬取书包网文章总结 今天闲来无事去看小说,但是发现没办法直接下载,所以呢就用python爬虫来下载一波了,哈哈- 爬取的是这篇小说:剑破九天(是不是很霸气,话不多说,开始-) 总体思路步骤 ...
- 手把手教你Python爬取女神套图
疲惫的生活里总要有些温柔梦想吧 目标URL:http://www.win4000.com/meinvtag4_1.html 爬取美桌网某个标签下的美女壁纸,点进详情页可以发现,里面是一组套图 一.网页 ...
- 福利!手把手教你Python爬取女神套图
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者:叶庭云 来源:凹凸数据 作者:叶庭云 CSDN ...
- python画美女代码_教你用python爬取网站美女图(附代码及教程)
我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...
- python爬取网站美女图(附代码及教程)爬虫爬取海量手机壁纸,电脑壁纸,美女图片,风景图片等
想要练习爬虫的兄弟们,可以看看这个 如果大神们看到有哪里可以改进的地方,请告诉小弟,我是个纯纯新手,练习了几次爬虫 以前一直用的BeautifulSoup,一直没有接触过正则表达式 正则表达式是一个非 ...
最新文章
- android 垂直 SeekBar 源代码(VerticalSeekBar)[转]
- dcase_util教程
- .NET Remoting
- 《线程管理:传递参数、确定线程数量、线程标识》
- CVPR 2021 Oral | GLEAN: 基于隐式生成库的高倍率图像超分辨率
- 【英语学习】【Daily English】U08 Dating L01 She is the one for me.
- idea2020代码el组件红色波浪线_Android实现炫酷的ViewPager3D组件
- mysql odbc 64位 驱动_MySQL ODBC驱动程序下载
- Chrome对应webdriver版本
- matlab图片数据库读取,MATLAB无法读取图像数据库问题
- 信息系统与信息化、信息系统开发方法、常规信息系统集成技术
- 梦三国2英霸模式貂蝉攻略(玩大流)
- django orm查询经纬度最近距离的数据
- 基于微信视频分享平台小程序设计与实现 开题报告
- 洛谷P1075 质因数分解C语言
- SI wave仿真前准备工作步骤
- 打包rpm包报错contains an invalid rpath
- Appium源码分析(4)-控制器模块
- LabVIEW生成exe错误解决方案(生成时VI断开,该VI已设置为不保存程序框图)
- docker run 指定 entrypoint
热门文章
- CSS第七天学习总结—— vertical-align 属性应用
- AST的一次简单尝试
- 【php毕业设计】基于php+mysql+apache的课程网站管理系统设计与实现(毕业论文+程序源码)——课程网站管理系统
- 喜马拉雅xm格式转化mp3_如何把喜马拉雅音频改为mp3格式
- precision and recall
- 【JAVA基础速过】第2章 Java 基本语法(上):变量
- 使用devops的团队_DevOps团队如何为网络星期一做准备
- 基于SpringCloudAlibaba模拟商城下单功能
- 使用计算机连接bmcc,【供应BMCC EF-摄影机(2.5K,13档动态范围,RAW格式,EF口)】价格_厂家 - 中国供应商...
- 公司产品介绍PPT参考