文章目录

  • 1 思路介绍
  • 2 完整代码
  • 2 代码介绍
    • 2.1 获取网站
    • 2.3 创建目录
    • 2.4 找到首图的名称和地址
    • 2.5 实现同一个人的翻页
    • 2.6 实现每一位小姐姐图片的连接
    • 2.7 爬取图片
  • 4 注意

1 思路介绍

  • 我们的目的是爬取每一位小姐姐的所有图片,并将不同种类的图片存放在不同目录下,因此需要创建主目录,以及下面的分目录
  • 顺序为:先爬取第一个小姐姐的所有图片,再爬取下一个小姐姐的图片,第一页24位小姐姐爬完后,翻到第二页继续

1、查看网站页面的地址:

通过翻页可以找到规律

2、分析网页代码,可发现图片所在的标签

并且可以看到图片地址和名称
3、点击第二张图片,查看该人物不同图片的地址,找出规律,以用为实现翻页


以此类推。

2 完整代码

import requests
import re
from bs4 import BeautifulSoup
import time
import os# 获取网站
def getHTMLText(url):r = requests.get(url)r.raise_for_status()r.encoding = r.apparent_encodinghtml = r.textreturn html# 创建目录
def creatFilesName(fileName,img_1_name):files_name = '清纯小姐姐'if not os.path.exists(files_name):os.mkdir(files_name)for name in img_1_name:file_name = files_name + '/' + nameif not os.path.exists(file_name):os.mkdir(file_name)fileName.append(file_name)def getFirstFile(html, img_1_name, img_1_html):soup_1 = BeautifulSoup(html, "html.parser")plt_1 = soup_1.find_all('div', class_="item_t")# 获取图片的名称和文件地址Re_1_html = re.findall('href="(.*?)"', str(plt_1))Re_1_name = re.findall('alt="(.*?)"', str(plt_1))for name in Re_1_name:img_1_name.append(name)# 过滤列表中的"###"for i in range(len(Re_1_html)):if Re_1_html[i] != "###":img_1_html.append(Re_1_html[i])def getimgsHTML(html, imgs):soup_2 = BeautifulSoup(html, "html.parser")plt_2 = soup_2.find('p', align='center')Re_img = re.findall('src="(.*?)"', str(plt_2))imgs.append(Re_img[0])# 获取每张图片,储存在空列表imgs中
def getImgs(html, imgs, url_0, j):getimgsHTML(html, imgs)for i in range(20):try:url_2 = 'https://www.mmonly.cc/mmtp/qcmn/322' + url_0[j] + '_' + str(i) + '.html'html_2 = getHTMLText(url_2)except:continuegetimgsHTML(html_2, imgs)# 爬取图片,休眠为5秒
def getImgPhoto(fileName, imgs, j):for i in range(len(imgs)):time.sleep(5)img = imgs[i]print(img)r = requests.get(img)with open(fileName[j] + '/' + str(i) + '.jpg', 'wb') as f:f.write(r.content)# 实现函数
def main():for n in range(1, 4):if n == 1:url_0 = ['211', '266', '197', '208', '196', '219', '209', '216', '217', '270', '241', '245', '268', '269','272', '282', '291', '293', '295', '296', '242', '233', '232', '240']elif n == 2:url_0 = ['240', '244', '221', '222', '228', '198', '586', '588', '967', '995', '001', '141', '144', '954','462', '268', '278', '983', '987', '458', '979', '990', '991', '000']else:url_0 = ['999', '002', '138', '009', '996', '992', '997', '006', '014', '026', '036', '037', '826', '589','976']img_1_name = []img_1_html = []fileName = []url_1 = 'https://www.mmonly.cc/mmtp/qcmn/list_16_' + str(n) + '.html'html = getHTMLText(url_1)getFirstFile(html, img_1_name, img_1_html)creatFilesName(fileName, img_1_name)for j in range(len(img_1_name)):print(img_1_name[j])imgs = []html = getHTMLText(img_1_html[j])getImgs(html, imgs, url_0, j)getImgPhoto(fileName, imgs, j)main()

效果




2 代码介绍

2.1 获取网站

使用requests库,例:

url = 'https://www.mmonly.cc/mmtp/qcmn/list_16_1.html'
r = requests.get(url)
r.encoding = r.apparent_encoding
html = r.text

不过多介绍。

2.3 创建目录

  • 由于要创建子目录,因此用循环将每一位小姐姐的图片名称作为子目录名,用os.path.exists()判断该目录是否存在。
  • 最后一行将图片路径储存在fileName空列表中,为下面爬取提供路径
  • 注意,不能将fileName放在if语句中,否则第二次运行时该列表为空。
files_name = '清纯小姐姐'
if not os.path.exists(files_name):os.mkdir(files_name)
for name in img_1_name:file_name = files_name + '/' + nameif not os.path.exists(file_name):os.mkdir(file_name)fileName.append(file_name)

2.4 找到首图的名称和地址

soup_1 = BeautifulSoup(html, "html.parser")
plt_1 = soup_1.find_all('div', class_="item_t")Re_1_html = re.findall('href="(.*?)"', str(plt_1))
Re_1_name = re.findall('alt="(.*?)"', str(plt_1))
  • 用BeautifulSoup找到图片所在的标签,用re找到标签中我们需要的字符串。
  • beautifulSoup返回为列表类型,而re库需要传入字符串类型,因此使用str(plt_1)将列表转化为字符串。

2.5 实现同一个人的翻页

for i in range(20):try:url_2 = 'https://www.mmonly.cc/mmtp/qcmn/322' + url_0[j] + '_' + str(i) + '.html'html_2 = getHTMLText(url_2)except:continue

使用循环实现同一个小姐姐不同图片的翻页,由于同一类的图片个数不同,在10张左右,因此循环的范围为0~19,并用try except 判断是否请求成功,如果不成功,继续下一次循环,保证程序正常运行。

2.6 实现每一位小姐姐图片的连接


通过观察发现每一位小姐姐的首个图片所在的地址有三位数字不同,由于没有规律,只能创建一个空列表url_0储存这三位数字。

if n == 1:url_0 = ['211', '266', '197', '208', '196', '219', '209', '216', '217', '270', '241', '245', '268', '269','272', '282', '291', '293', '295', '296', '242', '233', '232', '240']
elif n == 2:url_0 = ['240', '244', '221', '222', '228', '198', '586', '588', '967', '995', '001', '141', '144', '954','462', '268', '278', '983', '987', '458', '979', '990', '991', '000']
else:url_0 = ['999', '002', '138', '009', '996', '992','997','006','014', '026', '036', '037', '826', '589', '976']

由于我发现第三页后面的部分图片所在的地址与前面的有四位数不同,因此这里只展示前面的两页和第三页部分图片。如果有兴趣,可以自行尝试。

2.7 爬取图片

for i in range(len(imgs)):time.sleep(5)img = imgs[i]print(img)r = requests.get(img)with open(fileName[j] + '/' + str(i) + '.jpg', 'wb') as f:f.write(r.content)
  • imgs中储存了图片的链接(.jpg),以它的长度为循环范围,每一位小姐姐的图片名称为序列号从0开始。
  • 这里设置每爬取一张图片的休眠时间为5秒,可以自行调节

4 注意

该网站的限制较大,如果频繁访问,会被认为是恶意攻击,远程主机会强制断开连接。
遇到此种情况,可换用手机热点连接或换其他的网络。
如果大佬们有更好的方法,欢迎评论留言。

python爬虫 爬取清纯小姐姐图片相关推荐

  1. python爬虫爬取美丽小姐姐图片美女壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  2. Python三步爬取VMgirls小姐姐图片

    Python三步爬取VMgirls小姐姐图片 具体思路 第一步:确定目标 第二步:分析目标网站 第三步:代码编写 具体思路 第一步:确定目标:寻找目标网站,我选择的网站是http://www.VMgi ...

  3. 手把手教你爬取清纯小姐姐私房照,小孩子写学

    手把手教你爬取清纯小姐姐私房照,小孩子写学 先上效果图 头文件: 因为爬虫需要用到请求网络部分,所以需要这两个包,没有的话自行下载即可.这个可以直接用pip安装.如果连pip都不懂,那就只能学习一下p ...

  4. Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  5. python爬虫爬取彼岸图网图片

    python爬虫爬取彼岸图网图片 话不多说,直接上代码! import requests from PIL import Image from io import BytesIO import re ...

  6. python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  7. python爬虫爬取百度贴吧图片,requests方法

    每天一点点,记录学习 近期爬虫项目,看完请点赞哦---: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:python爬虫爬取百度贴吧图片,requests方 ...

  8. 三分钟教会你用Python爬取心仪小姐姐图片

    使用Python爬取小姐姐图片 首先上网站链接 唯美女生 爬取图片主要分为一下几步: 1.打开一个你喜欢的小姐姐的网站 E.g xiaojiejie web 2.下载并安装python环境 pytho ...

  9. 爬虫抓取汉服小姐姐图片

    知识储备: re,request等爬虫理论.利用os创建目录和已存在目录判断. 1.抓取52古装网 考虑到网络压力未采用异步,修改path地址为自己目录即可 import re import requ ...

最新文章

  1. Eclipse 4.9 正式发布,支持 Java 11!
  2. 转:Cocoa Runtime系统知识整理
  3. JavaScript 函数replace揭秘
  4. 关于属性值书写无效问题
  5. 金庸小说人物知识图谱构建——构建共现矩阵
  6. 抖音短视频 产品需求文档
  7. MCU学习笔记_UPF
  8. linux比较两个文件的不同
  9. 古代小说鉴赏辞典 - 郭子仪
  10. solaris9 x86安装D-LINK DFE-530TX网卡
  11. wamp环境二次配置
  12. 用二叉树表示家谱关系并实现各种查找功能
  13. bugku never give up
  14. item在C语言中是什么意思中文,item的中文翻译是什么意思
  15. PMP证书获取指南来了
  16. stm32f105rct6 使用ADC1 的 PC0、PC1、PC2、PC3、PC4通道 测电压
  17. 什么叫计算机编程语言,什么叫计算机编程语言?
  18. 设置PowerPoint2007自动循环播放
  19. unity中自制模拟第一人称视角
  20. python提取矩阵元素_python-如何获取矩阵中某个元素周围的所有...

热门文章

  1. Trino 本地编译搭建 standalone 模式
  2. WPViewPDF Delphi 和 .NET 的 PDF 查看组件
  3. 2020年396分上岸湖南大学计算机专硕考研经验分享
  4. Linux命令详解之 ls
  5. python调用woff_GitHub - zergtant/python-maoyan-spider: woff-xml解码 “猫眼网反爬虫机制” 的爬虫。...
  6. 浙江大学计算机科学排名,2017浙江大学专业排名结果
  7. android圆角设置
  8. 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“
  9. 【数据结构机试复习2】 赛马 猴子选大王
  10. (一)OSG初学者入门基础教程