Python 爬取煎蛋妹子图

python 爬取煎蛋ooxx妹子图 煎蛋网妹子图首页(http://jandan.net/ooxx),这个链接看起来怎么那么邪恶呢?经分析网站隐藏了图片地址。心一横,采取曲线路线,成功爬取大量妹子图~ 源码如下: 1 import requests 2 import re 3 import os 4 import base64 5 from urllib.request import urlretrieve... 阅读详情

煎蛋妹子图网站

最近一直在通过爬虫的练习,来巩固自己的所学习到的 python 基础,和爬虫一些框架的使用。今天的程序就是最近在学习的 selenium 库,通过利用 requests + beautifulsoup + selenium 库来进行网站的抓取。抓取的对象是煎蛋网中的妹子板块,图片的质量还是很高的,我放几张妹子图大家感受下。

正所谓妹子驱动学习,今天就给大家详细解析下我是如何一步步的完成妹子图片的抓取。

爬取结果

先看下最后的爬取结果,通过运行 demo.py 代码,程序就会把网站上的妹子图片,保存到当前工程目录下。在此程序中我创建了「jiandan」文件夹,并以当前的进度条为新的文件夹名,即「0.0」「1.0」「2.1」等等。最后把爬取到的图片,保存到相应的文件里。

程序结构

程序主要是由 6 个函数组成

get_one():是利用 webdriver 来请求对应的网站

pares_one():解析没带进度条的网站

pares_one_of_num():解析有带进度条的网站

write_to_file():把抓取到的图片保存到本地文件

next():进行翻页

main():程序执行的主函数

程序思路

如果你对爬虫比较熟悉的话,就会知道爬虫的步骤其实很简单,总结下主要有三部分:

1 目标站点分析,利用合适的请求库进行请求。

2 解析源代码,提取出相应的数据。

3 保存数据。

爬虫程序核心部分就这三个。我们顺着这个思路来看看这次的代码。

目标站点分析

首先要对目标网站进行结构分析,看看它的网页结构是如何,以及网页返回的数据是什么,是否有反爬机制,有些数据是否是通过 js 进行渲染,是否要进行翻页等等。

通过谷歌浏览器的开发者模式可以看到,网站的返回结果里是一堆 html 代码,但并没有我们想要的图片链接信息。如果你用常规的 requests 进行请求,返回的数据是不会有我们想要的图片信息。

所以这里我就想到,网站的图片资源应该是通过 js 加载的。对于需要 js 才能加载出来的网站,我们就可以利用 selenium 自动化测试请求库来进行加载。通过 selenium 请求库,我们就可以模拟一个真实的浏览器,请求网站,加载 js,返回我们想要的数据。这里对应的代码如下,需要你去网上下载对应的 chrome 驱动。

browser= webdriver.Chrome()

# 设置网站等待时间

wait= WebDriverWait(browser,10)

图片信息提取

随后就可以利用 beautifulsoup 这个解析库进行解析,把想要的信息提取出来。在这里我们需要的是图片信息,所以我通过 select() 函数进行提取,代码如下:

soup= BeautifulSoup(html,'lxml')

imgs= soup.select('img')

返回的是一个列表,然后再利用 for 把每个图片的链接,提取出来,并下载,代码如下:

forimginimgs:

img_url = re.findall('src="(.*?)"', str(img))

ifnotimg_url[0][-3:] =='gif':

ifnotimg_url[0][-3:] =='png':

ifimg_url[0][-3:]:

print('正在下载:%s 第 %s 张'% (img_url[0], count))

write_fo_file(img_url[0], percent_num, count)

count +=1

这里需要注意的是,我最开始在爬取的过程中遇到有些图片不是 jpg 格式,以及有些图片是 gif 格式。所以我加了一些判断来保证,获取到的图片链接是 jpg 格式,程序才能把图片下载下来。所以这里就有优化的地方,大家可以去再查找一些资料,看看是否可以把 png 或 gif 格式的图片一起保存。

解析源代码

当前进度条

为了控制程序爬取的次数,我们就需要找到一些条件来进行判断。一般的网站是会返回总的条数,但这次的网站通过观察并没有返回总条数的信息。并且在最开始进入妹子图板块,上方是没有进度条信息。

但当点击下一页的时候,网站就有显示出当前的进度条。

我们就可以利用这个当前浏览的位置,来控制程序爬取的次数。随后通过网站的源代码分析,就很容易得到这部分的信息,对应的代码如下:

num= soup.select('#body #comments .comments .page-meter-title')[0].getText()

percent= re.findall('\d+', num)

percent_num= percent[0] +'.'+ percent[1]

然后定义一个 next() 函数,来判断当前的进度条是否达到 100.0%,如果没有则继续爬取,对应的代码如下:

defnext(url):

html = get_one(url)

percent_num, next_url = pares_one_of_num(html)

whilepercent_num !='100.0':

next(next_url)

下一页链接

进一步的观察我们可以看到,下一页的链接地址,是保存在 a 标签当中,所以我们获取到 a 标签的内容,我们就有了跳转的能力,就可以爬取下一页的内容。对应的代码如下:

url= soup.select('#body #comments .comments .cp-pagenavi a')[1]

href= re.findall('href="(.*?)"', str(url))

next_url='https:'+ href[0]

针对最开始的页面没有当前浏览位置信息,我分别写了两个解析函数:pares_one()、pares_one_of_num()。对应的代码如下:

defpares_one(html):

soup = BeautifulSoup(html,'lxml')

imgs = soup.select('img')

url = soup.select('#body #comments .comments .cp-pagenavi a')[1]

href = re.findall('href="(.*?)"', str(url))

next_url ='https:'+ href[0]

count =0

forimginimgs:

img_url = re.findall('src="(.*?)"', str(img))

ifnotimg_url[0][-3:] =='gif':

ifnotimg_url[0][-3:] =='png':

print('正在下载:%s 第 %s 张'% (img_url[0], count))

write_fo_file(img_url[0],'0.0', count)

count +=1

returnnext_url

defpares_one_of_num(html):

soup = BeautifulSoup(html,'lxml')

imgs = soup.select('img')

num = soup.select('#body #comments .comments .page-meter-title')[0].getText()

percent = re.findall('\d+', num)

url = soup.select('#body #comments .comments .cp-pagenavi a')[1]

href = re.findall('href="(.*?)"', str(url))

percent_num = percent[0] +'.'+ percent[1]

next_url ='https:'+ href[0]

count =0

forimginimgs:

img_url = re.findall('src="(.*?)"', str(img))

ifnotimg_url[0][-3:] =='gif':

ifnotimg_url[0][-3:] =='png':

ifimg_url[0][-3:]:

print('正在下载:%s 第 %s 张'% (img_url[0], count))

write_fo_file(img_url[0], percent_num, count)

count +=1

returnpercent_num, next_url

保存数据

最后就是把图片保存到文件中,这部分的代码如下:

defwrite_fo_file(url, num, count):

dirName =u'{}/{}'.format('jiandan', num)

ifnotos.path.exists(dirName):

os.makedirs(dirName)

filename ='%s/%s/%s.jpg'% (os.path.abspath('.'), dirName, count)

print(filename)

withopen(filename,'wb+')asjpg:

jpg.write(requests.get(url).content)

优化改进

源代码我已上传到 Github 上,需要的同学可以点击「阅读原文」,如果觉得程序还不错的话,可以给我项目点个 star。

本次的程序还有一些不足的地方,比如利用 selenium 库在解析的时候非常的慢,这部分是可以优化的。还有程序在爬取到 80.6% 的时候,程序报错了,并没能把图片全部爬取完。这就说明还有一些情况,我没有考虑到。有待以后进一步优化。

这波教程不点个赞,不关注一下说不过去吧?这个网站有很多福利,我只能说大家注意身体。

对Python开发,爬虫等技术有兴趣的朋友可加群705673780,一起讨论技术,交流学习。

有兴趣的朋友可以关注公众号哦,每天会有关于Python的技术信息更新,走过路过不要错过呢~

python项目之 爬虫爬取煎蛋jandan的妹子图-上 python项目之 爬虫爬取煎蛋jandan的妹子图-上抓取妹子图练练手。网页url格式 http://jandan.net/ooxx/page-1777#comment 只需改变页码1777即可 分析页面源码发现妹子图有两个一个是缩略图<img src="http://ww1.sinaimg.cn/mw600/4bf31e43jw1f09htnzkh5j20dw0kumz0.jpg" / 阅读详情

相关推荐

python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!

前言 大家好,这里是「brucepk」爬虫 系列教程。此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点。 煎蛋网站 image 很多朋友都反应学 python 语言太枯燥,学不进去,其实学语言最好的方法是自己用所学的语言做项目,在项目中学习语言的用法。今天给大家带来的项目是用 python3 爬取煎蛋网妹子的图片。图片质量还不错,我放...

weixin_42500431的博客 1311

哈哈哈,真香!妹子图终于可以多图预览了

‍‍前言群里不少小伙伴在问妹子图为啥点开任何一张图都是第一张妹子图,真的不是难为各位小伙伴,这其实就是个 BUG,藏了很久很久很久的 BUG,不是撸主不改,是撸主没心情改,主要是阿里云的 ...

不是太高的手的专栏 1万+

用Python写的美女图片爬虫程序

用Python写的的美女爬虫程序,在自己电脑测试可行,已经爬取了上千的美女图片,有需要的朋友可以研究一下,代码相对还是比较简单易懂的....

妹子图 Spider

#!bin/python #-*- coding: UTF-8 -*- '''妹子图 spider URL: www.meizitu.com 抓取网站所有图片 ''' import re import string import urllib, urllib2 import os, sys import multiprocessing def getImageUrls(pag

努力奋斗 3866

2020年最新美女图片整站源码,图片类套图类网站

此源码为了缩减内容不带任何图片数据,请搭建后自己采集或者录入,采集不会的话可以百度找一下采集教程,,也可以直接去淘宝上找做采集的,价格也不是很贵! 本帖资源标签:WordPress自适应图片主题,主题模板,带会员积分下载系统 分类和标签添加筛选功能; 列表增加用户自定义排序功能,支持点赞和浏览数量排序; 优化二级菜单和三级菜单的css样式; 支持会员功能和用户中心模板; 支持第三方快速登陆(QQ和新浪); 新增单图模式,全新的图片浏览模式; 新增登陆、注册、找回密码三合一页面模板; 新增文章点赞排行榜页面; 新增AJAX列表加载功能; 新增广告投放面板; 支持点卡充值和点卡生成功能; 支持积分签到功能; 支持评论和投稿奖励积分功能; 支持积分开通会员功能(目前内置3个级别的会员); 支持积分下载资源和免费资源下载; 支持vip免费资源添加; 新增下载资源管理员和作者查看下载次数和校验资源功能; 支持文章前台投稿功能; 支持前台开启相对地址和绝对地址切换功能; 新增图片自动分页功能; 新增图片分页浏览模板; 新增后台列表显示缩略图和封面图片功能; 全新的SEO功能; 新增文章收藏功能; 新增文章顶踩功能(踩的按钮目前只在单图模式显示); 新增图片预加载功能; 幻灯片支持外链和自定义大图; 源码测试环境推荐php5.2/5.3/5.4Mysql 安装说明: 上传文件拿到网站根目录,直接安装即可,附带wordpress。

美女福利图片_微信小程序模板js代码前台前端H5页面源码.rar

美女福利图片_微信小程序模板js代码前台前端H5页面源码.rar

干货集中营(分享)-每日分享妹子图和技术干货

说明网址:http://gank.io/API接口:http://gank.io/api根据API接口做的一个客户端代码,客户端不是我做的,是@gaolonglong做的。 项目github地址:https://github.com/gaolonglong/GankGirl我学习了这个代码,然后在这里分享一下,对代码中的一些东西稍微改动了一下,然后分享出来,大家可以学习一下。本来添加了一些界面,然

nyyin@qq.com 5万+

centos7 清理缓存

一、系统环境 系统版本 CentOS Linux release 7.3.1611 (Core) 内核版本 Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP 背景 服务器分配的账号是普通用户,只能执行sudo命令 二、缓存查看及基本概念 查看内存使用情况 [user01@xx-user ~]$ free -h total used free shared buff/cache availabl

sunzq55的博客 4004

福利!!!Python爬取好看的妹子图!!!

大致步骤: 第一步:找到我们要爬取的网站 https://www.vmgirls.com/这是个妹子图片的私人网站 第二步:打开Vscode或者Pycharm都可以 复制我的代码,详细的解释写好了 ps:requests库需要手动下载,按win+R输入cmd进入命令行模式,输入pip install requests安装requests库。 第一部分,请求网页。 # 导入requests库 i...

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 5007

Python地理空间库安装指南:从gdal到geopandas的完整流程

本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。

weixin_29091105的博客 464

揭秘CAS:深入理解与应用解析

在并发编程中,Compare-And-Swap(CAS)机制作为一种无锁算法,凭借其高效性和避免线程阻塞的优势,受到广泛关注。CAS不仅在底层实现上有着重要地位,还在实际开发中发挥着关键作用。本文将从CAS的工作原理、在Java中的实现及其增强机制来回顾和加深理解一下CAS。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 85万+

python项目之 爬虫爬取煎蛋jandan的妹子图-下

python项目之 爬虫爬取煎蛋jandan的妹子图-下函数如下 读取全部单个txt组合成一个TXT文件,并把网址保存在all_imag_urls中 read_write_txt_to_main() 读取单个TXT件的网址 get_url() 每一个图片保存在本地 get_imags(all_imag_urls) 最终结果如下源码如下# coding:utf-8 #############

To be better 6983

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

python爬取煎蛋网妹子图

看了小甲鱼的python教学视频,爬取煎蛋网妹子图的代码已经不适用了,网上其它人的代码多有报错,本萌新结合其他人的方法,终于写出一个可行的,在此分享_(:з)∠)_(运行非常慢就是了) import requests from bs4 import BeautifulSoup from selenium import webdriver import urllib.request def ...

YinDaer的博客 483

PINN物理信息网络 | 物理信息硬约束下的混合专家训练框架

PINN物理信息网络 | 物理信息硬约束下的混合专家训练框架

算法如诗的博客 879

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

2301_77192876的博客 2214

Python爬取煎蛋网的妹子图

煎蛋网其中有一个版面,全是好看的小姐姐。本着美女是学习的第一动力的原则,写个程序把小姐姐们都下载下来。 URL:http://jiandan.net/ooxx 程序结构 分析目标网页 提取目标信息 将图片写入文件夹 程序结构 程序主要由一下四个函数构成 def get_html(url) def download(html) def write_to...

_IsWdZh 4718

★教程1:matlab学习教程入门100例目录

★基础入门 1.为什么要学习MATLAB 2.MATLAB安装 持续更新....... ★MATLAB基础编程语言熟悉

FPGA/MATLAB学习教程/源码/项目合作开发 4万+

python 爬虫爬取煎蛋网妹子图

python 爬虫爬取煎蛋网妹子图 前言 大家好,这里是「brucepk」爬虫 系列教程。此文首发于「brucepk」公众号,欢迎大家去关注。此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点。 煎蛋网站 煎蛋网.png 很多朋友都反应学 python 语言太枯燥,学不进去,其实学语言最好的方法是自己用所学的语言...

ding740101的博客 367

7.DJI-PSDK:psdk负载应用固件升级(基于RTOS)

在单片机应用程序开发阶段,我们可以借助keil5和J-LINK来直接下载应用程序进行开发和调试, 但在产品交付之后,我们对应用程序做了改动和升级,是断然不可能采用这种方式的,我们应该将新版本的程序固件打包发给客户, 能够方便用户通过DJI Assistant2选择更新负载设备的固件,导入本地固件程序包,更新负载设备。使用STM32F4 开发的负载设备从Flash 中直接读取固件文件并运行负载设备程序,因此开发者需先烧录Bootloader 再烧录应用固件,烧录Bootloader 的步骤不再赘述。

哒宰的博客 673

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python爬取煎蛋网的妹子图

程序思路来自鱼C的python教程 贴程序 import urllib.request import os import base64 import random def url_open(url): useragent_list = ['Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0', ...

ghfuidy的博客 478

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python+pandas实现财报自动化:从Excel到高效汇总报表

在财务分析与数据运营中,Excel 是最常用的数据处理工具,但面对多公司、多科目的月度财报整理,手工复制粘贴与公式关联不仅效率低下,还容易因疲劳或疏漏引发数据错误。Python 数据分析库 pandas 提供了从数据读取、清洗到分组汇总的完整解决方案,通过脚本化流程替代重复劳动,让原始 Excel 数据在几分钟内自动生成结构统一的汇总报表与透视分析表。这种自动化方式适用于固定格式的财报合并、科目汇总、同比环比计算等场景,能显著提升办公效率并降低出错概率。本文以 pandas 为核心,演示如何批量读取利润表、

weixin_34049948的博客 334

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python3学习笔记之九——爬取煎蛋上的妹子图

看到csdn公众号上推送的一篇利用selenium+PhantomJs爬取煎蛋妹子图的文章,对于初学爬虫的我跃跃欲试。selenium是自动化测试的工作,Phantomjs相当于无界面的浏览器,用的内核是webkit,很遗憾的是当我配置完环境之后,调试时,蹦出来一个警告,大致意思selenium不支持Phantomjs,请使用headless的chrome和firefox。后来又查了下,说是sel...

joey_2018_的博客 1077

Python爬虫练习四:利用selenium爬取煎蛋网的妹子图

    目标网址:http://jandan.net/ooxx。    经研究发现,煎蛋网设置了大量的反爬虫机制(果然妹子是第一生产力,网站被爬的痛了),隐藏了图片地址,搞了半天没找出规律。心一横,采取曲线路线,成功爬取大量妹子图~    selenium可以模仿人操作浏览器,从而达到通过与浏览器交互的方式,使服务器上的反爬虫机制失效。但这种方式也有其缺点:1、必须要打开浏览器,程序模拟人对浏览器...

从0开始的程序猿生活 1031

python3 爬煎蛋ooxx妹子图

import re import urllib.request import random import os import http.server import http.client from urllib.error import URLError, HTTPError import urllib.parse proxy = [] #定义代理IP列表 def change_proxy(

老中医 4万+
上一篇: 改善 Python 程序的 91 个建议
下一篇: 同样是追星 ,为什么他们能这么做
AI女神
博客等级 码龄8年 78粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值