美女图片的Python爬虫实例(一)

该爬虫面向成年人且有一定的自控能力(涉及部分性感图片,仅用于爬虫实例研究)

目标

通过爬虫,得到 [秀人网] 里面的小姐姐并给她们一个温暖的家

衣沾不足惜,但使愿无违

思路

  1. 百度 秀人网,得到网址:https://www.xxxx.com/XiuRen/,去首页:https://www.xxxx.com/

  2. F12看网页结构,通过正则表达式对链接和结构进行解析并获取

  3. Pycharm+Python 3.7,要啥有啥

  4. 成功获取,大功告成

步骤

第一步:查看网页结构

F12大法-粗略获取网页

通过对首页进行 “检查” ,我们得到了这样的信息:

美女图片的Python爬虫实例(一),20240312055503467812.webp,Python爬虫,教程,第1张

<a href="/XiuRen/2024/202414901.html" alt="[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P" title="[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P"><img src="/UploadFile/pic/14901.jpg" style="opacity:1;display:inline;"><div class="postlist-imagenum"><span>唐安琪</span></div></a><div class="postlist-imagenum"><span>唐安琪</span></div>

再通过鼠标点击 <img src="/UploadFile/pic/14901.jpg"> 我们可以得到这样的信息:

 

美女图片的Python爬虫实例(一),20240312055707335325.webp,Python爬虫,教程,第2张

这两个图表示啥呢? 

对应网页结构

  • 网页URL(即首页网址):https://www.xxxx.com

  • 首页重点——以上图小姐姐图片为例: src="/UploadFile/pic/10491.jpg"

  • 图片对应网页地址:href="/XiuRen/2024/202414901.html"

  • 图片对应标题:[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P(少儿不宜)

  • 图片对应人物:span>唐安琪</span

  • 细看图片信息

  • 我们再仔细看看这张图,发现在标题下面还有时间和观看人数(貌似)

美女图片的Python爬虫实例(一),20240312060021213798.webp,Python爬虫,教程,第3张

对应网页结构

从这里可以得出:

  • 图片创建时间:/i>2021.09.01<span

  • 图片观看次数:/i>101</span

第二步:获取对应网页

开发环境:

Windows 10 64位专业版 + PyCharm + Python3.7 +

import osimport timeimport requestsimport re

其中:

  • os 用于路径获取

  • time 用于延时

  • requests 用于获取网页信息

  • re 用于解析

网页信息

从 第一步:查看网页结构 中可以知道:

  • 首页图片链接地址为:首页链接+src中的链接,即:https://www.xxxx.com/UploadFile/pic/14901.jpg

  • 图片对应专辑名称为:[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P

  • 图片对应专辑网址为:首页链接+href中的链接,即:https://www.xxxx.com/XiuRen/2024/202414901.html

  • 图片对应人物:唐安琪

  • 图片创建时间:20240311

 

Python获取:

第一步:获取网页

通过 requests.get 我们可以获取到网页,由于有中文,进行 ‘utf-8’编码,最后转text进行展示(headers 内的是通过F12获取的当前网页headers信息),至此,首页信息获取至 Get_html 中

import requests# 头标签headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84'}

Get_url = requests.get('https://www.xxxx.com/',headers=headers)
Get_url.encoding = 'utf-8'# print(Get_url.text)# print(Get_url.request.headers)Get_html = Get_url.text

第二步:解析网页

最开始用的是re.findall(规则,数据)的方式,然后感觉太麻烦了,换成re.compile(规则,re.S).findall(数据)
重点是规则部分,urls 在这里是获取图片对应的 专辑网页信息(即href中的链接) 、标题信息和图片自身路径信息
inforName这里是获取人物信息和标题信息
likeNum这里是获取专辑对应的创建时间和观看人数
至此,相关信息已全部获取

import re
# 正则表达式对应的为:
# (.*?):获取()内的所有
# \"(.*?)\" 用于匹配网页
# re.findall 用于获取()内的数据并每存为元组
urls = re.findall('<li class="i_list list_n2"><a  href=\"(.*?)\" alt=(.*?) title=.*?><img src=\"(.*?)\"',Get_html)
patren1 = r'<div class="postlist-imagenum"><span>(.*?)</span></div></a><div class="case_info"><div class="meta-title">\[.*?\](.*?)</a></div>'
patren2 = '<div class="meta-post"><i class="fa fa-clock-o"></i>(.*?)<span class="cx_like"><i class="fa fa-eye"></i>(.*?)</span>'
inforName = re.compile(patren1,re.S).findall(Get_html)
likeNum = re.compile(patren2,re.S).findall(Get_html)

第三步:获取首页封面图片

首先是指定图片存储目录:(这里是我自行设置的)

dir = r"C:/Users/lenovo/Desktop/xiuren/xiuren1/"

然后我做了个判断,观看人数超过10的写真专辑我才获取封面图片,将它保存在

dir 下的 人名 下的 时间名 下的 专辑名 文件夹中

os.makedirs() 用于创建文件夹
urls[i][2].split(’/’)[-1] 这里是把图片对应的路径如:/UploadFile/pic/9023.jpg最后一截,即 9023.jpg 作为图片的名称进行保存
最后把图片路径与网页一拼接,就是图片的url,通过 requests.get() 直接获取后写入即可

import osimport time

dir = r"C:/Users/lenovo/Desktop/xiuren/xiuren1/"url = "https://www.xxxx.com"# 创建目录:人名+时间+专辑名num = len(likeNum)for i in range(num):	if (int(likeNum[i][1]) > 10):
		getImgDir=dir+str(inforName[i][0])+'/'+str(likeNum[i][0])+'/'+str(inforName[i][1]+'/')		# 创建对应目录
		if not os.path.exists(getImgDir):
			os.makedirs(getImgDir)
		imgUrl = url+urls[i][2]
		imgName = getImgDir+urls[i][2].split('/')[-1]
		print(imgName)
		time.sleep(1)		# 获取封面图片
		Get_Img = requests.get(imgUrl, headers=headers)		with open(imgName,'wb') as f:
			f.write(Get_Img.content)		# 进入具体网页

至此,首页观看人数超10的封面图片已保存至对应目录下

美女图片的Python爬虫实例(一),20240312062707148334.webp,Python爬虫,教程,第4张

第三步:获取写真专辑图片

通过 第二步:获取对应网页,我们成功获取了首页的小姐姐图片,但是这些并不是爬虫,我们只在首页上爬了几张图片而已,我们应该深入到内部,去获取完整的写真图片。

目的

获取观看人数超10的写真套图,而不只是封面

思路

第一步:获取套图所在网页链接:

即:第二步:获取对应网页 的 网页信息

  • 图片对应专辑网址为:首页链接+href中的链接,即:https://www.xxxx.com/XiuRen/2021/20219023.html

第二步:分析写真套图对应网页:

同样的F12,我们可以知道,这一页一共有三张图片:

美女图片的Python爬虫实例(一),20240312063047939280.webp,Python爬虫,教程,第5张

其图片对应代码如下:

<p style="text-align: center"><img alt="Xrmnw.Com[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P" src="/uploadfile/202403/11/CC172640971.webp"><br><br><img alt="Xrmnw.Com[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P" src="/uploadfile/202403/11/57172640362.webp"><br><br><img alt="Xrmnw.Com[XiuRen秀人网]No.8142_模特唐安琪浅色上衣配黑短裙露蓝灰蕾丝内衣秀曼妙身姿诱惑写真81P" src="/uploadfile/202403/11/17172640642.webp"><br><br></p>

美女图片的Python爬虫实例(一),20240312063240370162.webp,Python爬虫,教程,第6张对应的代码如下:

<div class="page"><a href="/XiuRen/2024/202414901.html" class="current">1</a><a href="/XiuRen/2024/202414901_1.html">2</a><a href="/XiuRen/2024/202414901_2.html">3</a><a href="/XiuRen/2024/202414901_3.html">4</a><a href="/XiuRen/2024/202414901_4.html">5</a><a href="/XiuRen/2024/202414901_5.html">6</a><a href="/XiuRen/2024/202414901_6.html">7</a><a href="/XiuRen/2024/202414901_7.html">8</a><a href="/XiuRen/2024/202414901_8.html">9</a><a href="/XiuRen/2024/202414901_9.html">10</a><a href="/XiuRen/2024/202414901_10.html">11</a><a href="/XiuRen/2024/202414901_11.html">12</a><a href="/XiuRen/2024/202414901_12.html">13</a><a href="/XiuRen/2024/202414901_13.html">14</a><a href="/XiuRen/2024/202414901_14.html">15</a><a href="/XiuRen/2024/202414901_15.html">16</a><a href="/XiuRen/2024/202414901_16.html">17</a><a href="/XiuRen/2024/202414901_17.html">18</a><a href="/XiuRen/2024/202414901_18.html">19</a><a href="/XiuRen/2024/202414901_19.html">20</a><a href="/XiuRen/2024/202414901_20.html">21</a><a href="/XiuRen/2024/202414901_21.html">22</a><a href="/XiuRen/2024/202414901_22.html">23</a><a href="/XiuRen/2024/202414901_23.html">24</a><a href="/XiuRen/2024/202414901_24.html">25</a><a href="/XiuRen/2024/202414901_25.html">26</a><a href="/XiuRen/2024/202414901_26.html">27</a><a href="/XiuRen/2024/202414901_1.html">下页</a></div>

第三步:写真套图对应网页信息:

从上面两张图和对应代码,我们可以知道,

  • 这个套图一共有27页 >27</a

  • 每一页有三张图片 src="/uploadfile/202403/11/CC172640971.webp">、src="/uploadfile/202403/11/57172640362.webp">、src="/uploadfile/202403/11/17172640642.webp">

  • 除此页外的剩下页对应链接均有: 如href="/XiuRen/2024/202414901_1.html">

代码实现

思路很简单,在原有基础上深入一层至对应网页再循环获取即可

前面部分类似

前面部分类似,把首页扔了个变量:WebURL 然后添加了新的规则 patren3 用于获取套图的三张图片信息。

#第一步:请求网页import requestsimport sys

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84'}
WebURL = "https://www.xxxx.com/"Get_url = requests.get(WebURL,headers=headers)# print(Get_url.text)# print(Get_url.request.headers)Get_html = Get_url.text#第二步:解析网页import re# 正则表达式对应的为:# (.*?):获取()内的所有# \"(.*?)\" 用于匹配网页# re.findall 用于获取()内的数据并每存为元组urls = re.findall('<li class="i_list list_n2"><a  href=\"(.*?)\" alt=(.*?) title=.*?><img src=\"(.*?)\"',Get_html)
patren1 = r'<div class="postlist-imagenum"><span>(.*?)</span></div></a><div class="case_info"><div class="meta-title">\[.*?\](.*?)</a></div>'patren2 = '<div class="meta-post"><i class="fa fa-clock-o"></i>(.*?)<span class="cx_like"><i class="fa fa-eye"></i>(.*?)</span>'inforName = re.compile(patren1,re.S).findall(Get_html)
likeNum = re.compile(patren2,re.S).findall(Get_html)# 针对套图所在网页的图片链接信息,添加新的解析规则# <img οnlοad="size(this)" alt=.*? title=.*? src="/uploadfile/202109/1/07201045631.jpg" />patren3 = '<img οnlοad=.*? alt=.*? title=.*? src=\"(.*?)\" />'#第三步:进一步解析网页#第三步:存储封面import osimport time

dir = r"C:/Users/lenovo/Desktop/xiuren/xiuren1/"url = "https://www.xxxx.com/"

后面进行循环获取

这里主要思路如下:

  • 进入具体网页中,即再次 requests.get()

  • 解析此时获取的网页,将套图对应的所有页面路径存入 AllPage 中 (注意 我正则表达式存在一点问题,把最后一个链接:即 a href="/XiuRen/2021/20219023_1.html">下页</a 这个也获取到了,所以做了个break跳出,导致套图的最后一页图片是无法获取到的,即最终会少3张(if放for循环后面就行,懒得改了)

  • 然后就对每一页的图片进行循环获取,就是把每一页的图片链接扔给==GetPageImg ,再进行requests.get()保存完事了

# 创建目录:人名+时间+专辑名num = min(len(inforName), len(likeNum))  # 确保使用两者中最短的长度for i in range(num):
    if i < len(likeNum) and int(likeNum[i][1]) > 10:
        getImgDir = dir + str(inforName[i][0]) + '/' + str(likeNum[i][0]) + '/' + str(inforName[i][1]) + '/'        # 创建对应目录
        if not os.path.exists(getImgDir):
            os.makedirs(getImgDir)
        imgUrl = url + urls[i][2]
        imgName = getImgDir + urls[i][2].split('/')[-1]
        print(imgName)
        time.sleep(1)        # 获取封面图片
        Get_Img = requests.get(imgUrl, headers=headers)
        with open(imgName, 'wb') as f:
            f.write(Get_Img.content)        # 进入具体网页
        IntoPageUrl = WebURL + urls[i][0]
        Get_InPage = requests.get(IntoPageUrl, headers=headers)
        Get_InPage.encoding = 'utf-8'
        Get_InPagehtml = Get_InPage.text

        AllPage = re.findall('</a><a href=\"(.*?)\">([0-30]*)', Get_InPagehtml)

        for k in range(len(AllPage)):
            if k == len(AllPage) - 1:
                break
            else:
                imgPageUrl = re.compile(patren3, re.S).findall(Get_InPagehtml)
                PageNum = len(imgPageUrl)                # 循环获取并保存图片
                for l in range(PageNum):
                    GetPageImg = url + imgPageUrl[l]
                    print(GetPageImg)
                    PageImgeName = getImgDir + imgPageUrl[l].split('/')[-1]
                    print(PageImgeName)
                    time.sleep(1)                    # 获取内部图片
                    Get_PImg = requests.get(GetPageImg, headers=headers)
                    with open(PageImgeName, 'wb') as f:
                        f.write(Get_PImg.content)
                # 继续下一页获取图片
                NewPaperUrl = WebURL + AllPage[k][0]
                time.sleep(1)
                Get_InPage = requests.get(NewPaperUrl, headers=headers)
                Get_InPage.encoding = 'utf-8'
                Get_InPagehtml = Get_InPage.text

至此,首页观看人数超10的套图已保存至对应目录下

第四步:获取全站写真专辑图片(代码报错,有能力的修复,仅提供思路)

问题

OK,现在我们是已经获取到所有的套图了,但是我们发现,我们只是获取到首页的观看人数超10的套图,但实际上的套图远不止一页,因此我们需要找到网站对应的所有套图:

于是我们发现:如果我们进入网页为https://www.xxxx.com/XiuRen/, 则可以看到有:272

美女图片的Python爬虫实例(一),20240312072212750308.webp,Python爬虫,教程,第7张

目的

获取  中所有的图片

思路

思路类似,只不过在获取首页之前,先获取此网页的数据,然后在循环内进行获取即可 

代码实现

第一步:获取 的所有页数

具体来说,就是加了个规则patrenForPageNum, 再把当前页所能到达的数量获取出来:这里是匹配了个数字并返回

PageNum = "".join(list(filter(str.isdigit, temp)))

再进行格式拼接生成所有网页URL并保存到==GetAllPage ==中

import os
import time

dir = r"C:\Users\lenovo\Desktop\xiuren\xiuren1"
url = "https://www.xxxx.com"

import requests

headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84'
}

URL = "https://www.xxxx.com/XiuRen/"
WebURL = "https://www.xxxx.com/"
Get_url = requests.get(URL,headers=headers)
Get_url.encoding = 'utf-8'
Get_html = Get_url.text
print(Get_html)

import re
patrenForPageNum = '</a><a href=\"(.*?)\">'
Get_PageNum = re.compile(patrenForPageNum,re.S).findall(Get_html)
temp = str(Get_PageNum[len(Get_PageNum)-1])
PageNum = "".join(list(filter(str.isdigit, temp)))
print(temp)
print(PageNum)

# 获取所有网页,存入AllPage中
AllPageTemp = []
GetAllPage = ()
for i in range(int(PageNum)):
	if i > 0:
		AllPageTemp.append(WebURL+"/XiuRen/index"+str(i+1)+".html")
GetAllPage += tuple(AllPageTemp)

第二步:在PageNum中进行循环获取图片即可

这里其实也有点问题,就是最后一页的数据是拿不到的,这里有点逻辑缺陷,但基本上这个网页 内的所有超过10观看的套图都能爬到

for pagenum in range(int(PageNum)):
	urls = re.findall('<li class="i_list list_n2"><a  href=\"(.*?)\" alt=(.*?) title=.*?><img class="waitpic" src=\"(.*?)\"', Get_html)
	patren1 = r'<div class="postlist-imagenum"><span>(.*?)</span></div></a><div class="case_info"><div class="meta-title">\[.*?\](.*?)</a></div>'
	patren2 = '<div class="meta-post"><i class="fa fa-clock-o"></i>(.*?)<span class="cx_like"><i class="fa fa-eye"></i>(.*?)</span>'
	inforName = re.compile(patren1, re.S).findall(Get_html)
	likeNum = re.compile(patren2, re.S).findall(Get_html)
	print(urls)
	print(inforName)
	print(likeNum)
	num = len(likeNum)
	
	patren3 = '<img οnlοad=.*? alt=.*? title=.*? src=\"(.*?)\" />'
	
	for i in range(num):
		if (int(likeNum[i][1]) > 10):
			getImgDir = dir + str(inforName[i][0]) + '/' + str(likeNum[i][0]) + '/' + str(inforName[i][1] + '/')
			# 创建对应目录
			if not os.path.exists(getImgDir):
				os.makedirs(getImgDir)
			imgUrl = url + urls[i][2]
			imgName = getImgDir + urls[i][2].split('/')[-1]
			print(imgName)
			time.sleep(1)
			# 获取封面图片
			Get_Img = requests.get(imgUrl, headers=headers)
			with open(imgName, 'wb') as f:
				f.write(Get_Img.content)
			# 进入具体网页
			IntoPageUrl = WebURL + urls[i][0]
			Get_InPage = requests.get(IntoPageUrl, headers=headers)
			Get_InPage.encoding = 'utf-8'
			Get_InPagehtml = Get_InPage.text

			AllPage = re.findall('</a><a href=\"(.*?)\">([0-9]*)', Get_InPagehtml)

			for k in range(len(AllPage)):
				imgPageUrl = re.compile(patren3, re.S).findall(Get_InPagehtml)
				PageNum = len(imgPageUrl)
				# 循环获取并保存图片
				for l in range(PageNum):
					GetPageImg = url + imgPageUrl[l]
					print(GetPageImg)
					PageImgeName = getImgDir + imgPageUrl[l].split('/')[-1]
					print(PageImgeName)
					time.sleep(1)
					# 获取封面图片
					Get_PImg = requests.get(GetPageImg, headers=headers)
					with open(PageImgeName, 'wb') as f:
						f.write(Get_PImg.content)

				if k == len(AllPage) - 1:
					break

				# 继续下一页获取图片
				NewPaperUrl = WebURL + AllPage[k][0]
				time.sleep(1)
				Get_InPage = requests.get(NewPaperUrl, headers=headers)
				Get_InPage.encoding = 'utf-8'
				Get_InPagehtml = Get_InPage.text
	Get_url = requests.get(GetAllPage[pagenum],headers=headers)
	Get_url.encoding = 'utf-8'
	Get_html = Get_url.text

「小礼物走一走?华子可乐来一个!」

还没有人赞赏,支持一下吧

哇~真是太棒了 感谢大佬支持

可乐华子奶茶傍一矿泉水
支付宝
内容投诉

下载说明:

1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久VIP能下载全站会员专属源码了,所以单独购买也好,会员也好均不提供相关技术服务。

2.如果源码下载地址失效请 提交留言(点击我)进行补发。

3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!

4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【晓梦云】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。

5.请您认真阅读上述内容,购买即以为着您同意上述内容。


晓梦云资源网 » 美女图片的Python爬虫实例(一)

发表评论

您需要后才能发表评论

晓梦云资源站、分享更多优质有趣的源码!

特权介绍 留言处理