听说煎蛋网随手拍都是漂亮的小姐姐,今天就用python来爬取这些图片噢!!

​ 本文使用了requests模块进行发送请求,使用了BeautifulSoup模块对网页进行解析,在使用之前首先安装这两个第三方库;方法如下:

  • 安装requests库
pip install requests
  • 安装bs4库
pip install bs4

话不多说,直接开始代码操作!!!

1. 首先

我们打开煎蛋网,看到了首页上面有信息—随手拍,而我们的主要任务就是爬取随手拍的图片将其进行保存。 忘了说,网址是这个http://jandan.net/ooxx/MjAyMDA4MDctMTMz#comments

2. 接下来

开始分析网页源代码,提取相关信息。那我们以什么样的思路来进行爬虫的设计呢?稍加思考,聪明的你立即有了想法,我们首先爬取整张网页的信息,之后再该网页中提取原图的保存地址,最后通过请求图片的地址,将图片进行保存。我们大体上有了一个思路,开始最有趣并且好玩的代码编写吧。

  • 首先右击页面选择审查元素(快捷键为Fn+F12),之后再点击左上角的定位符号来定位图片被存在哪一个标签里面。

  • 其次我们要将该页面的源码爬取下来,以便于下一步解析网页,直接上代码来分析。

对以下代码的注释:

  1. 我们可以看到定义了一个函数get_totle_page(url),说的高大上一点,我们采用了模块化的程序设计思想;

  2. 此处我们说另外一个高大上的名词,即UA伪装,现在好多网站都建立了反爬虫机制,UA伪装便是为了告诉浏览器我们的身份是一个浏览器,而不是一个爬虫,防止被限制访问;

  3. global headers 由于接下来我们需要访问图片的地址,发送请求信息将其存储下来,所以我们将headers定义为全局变量,方便请求图片的时候使用;

  4. 很明显,程序中我们还加入了异常处理机制,可以这么理解,当程序连接失败的时候进行异常处理,返回值为None。

def get_totle_page(url):global headersheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}try:response = requests.get(url ,headers =headers)if response.status_code == 200:return response.textexcept requests.ConnectionError:print("请求数据失败!!!")return None
通过以上的操作,我们发现图片存储在<div  id = "comments">里面的<ol  class= "commentlist">下的每个<li>标签里面。其原图的地址保存在<li>里面的<div  class = "text">下的<p>标签中的<a  class = "view_img_list">标签的属性值"href"中。

这一步是将图片的地址链接解析出,我的想法是创建一个空列表totle_list = []进行存储图片的地址链接。还是一样的风格,简单粗暴,直接上代码。

  • 我们使用的是BeautifulSoup来解析网页,先来“煲一锅汤”
soup = BeautifulSoup(html,"lxml")
  • 前面我们分析了图片的具体保存的标签位置,下面进行解析:
div = soup.find('div',attrs = {'id':'comments'})ol_list = div.find(name = 'ol')​for ol in ol_list.find_all(name = 'li'):try:text_list = ol.find('div',attrs = {'class':'text'})#print(text_list)global a_lista_list = 'http:' + text_list.p.a['href']#print(a_list)totle_list.append(a_list)except:pass#print(totle_list)return totle_list
需要特别说明的一点,在煎蛋网随手拍的网页上面有广告信息,然而广告信息也保存在<li> 标签里面,所以在解析的过程我们需要跳过保存广告的<li>标签进行解析图片,所以我们加入了异常处理机制,若<li>标签里面没有<div  class = "text">,直接跳过该标签,解析下一个<li>标签。

  • 最后,我们将保存着图片地址的连接都保存在了列表totle_list里面。

3. 再下来

我们就需要将解析的图片地址链接进行二进制数据的本地存储了,为了保持我们一贯的整洁作风,咳咳咳,此处需要来一张图修饰一下······

  • 我们创建一个文件夹来存放所有的照片。

  • 有意无意的插上一句,os库是python的内置库,在使用之前不需要特殊进行安装,调用即可。

 if not os.path.exists('./picture_Libs'):os.mkdir('./picture_Libs')
  • 接下来进行请求图片的地址链接,将图片进行本地的保存。

  • 循环遍历请求totle_list里面保存的图片的地址链接,图片是二进制文件,所以使用了response.content。

img_path = './picture_Libs/' + totle.split('/')[-1]
  • 对于该语句是说明了图片的本地保存地址,我们选的是新建的文件夹下面,用split()语句以“/”对地址连接进行分割,选择分割之后的最后一部分作为图片的名字来进行保存。
 for totle in totle_list:try:response = requests.get(url=totle, headers=headers)if response.status_code == 200:response.encoding = response.apparent_encodingimg_data = response.contentexcept TimeoutError:print('请求超时!!!')
​img_path = './picture_Libs/' + totle.split('/')[-1]#print(img_path)with open(img_path,'wb') as fp:fp.write(img_data)

3.最后

我们通过主函数将我们的各个功能模块串联起来,话不多说,上完整代码啦。

我爬取的url是"http://jandan.net/ooxx/MjAyMDA4MDctMTI" +str(i) + “#comments”

在爬取煎蛋网随手拍的时候,可自行去观察url的不同,来寻找规律,来构建url进行爬取。

import requests
from bs4 import BeautifulSoup
import lxml
import os
​
def get_totle_page(url):global headersheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}try:response = requests.get(url ,headers =headers)if response.status_code == 200:return response.textexcept requests.ConnectionError:print("请求数据失败!!!")return None
​
def get_content_page(html):soup = BeautifulSoup(html,"lxml")totle_list = []div = soup.find('div',attrs = {'id':'comments'})ol_list = div.find(name = 'ol')
​for ol in ol_list.find_all(name = 'li'):try:text_list = ol.find('div',attrs = {'class':'text'})#print(text_list)global a_lista_list = 'http:' + text_list.p.a['href']#print(a_list)totle_list.append(a_list)except:pass#print(totle_list)return totle_list
​
def save_img_list(message):if not os.path.exists('./picture_Libs'):os.mkdir('./picture_Libs')for totle in message:try:response = requests.get(url=totle, headers=headers)if response.status_code == 200:response.encoding = response.apparent_encodingimg_data = response.contentexcept TimeoutError:print('请求超时!!!')
​img_path = './picture_Libs/' + totle.split('/')[-1]#print(img_path)with open(img_path,'wb') as fp:fp.write(img_data)
​
def main():for i in range(6):url = "http://jandan.net/ooxx/MjAyMDA4MDctMTI" +str(i) + "#comments"html = get_totle_page(url)message = get_content_page(html)#print(html)save_img_list(message)if __name__ == "__main__":main()

运行程序之后,我们发现了好多好看的小姐姐保存在了我创建的文件夹里面,哇,没想到一打开一张就是一个背影杀手呀,我这该死的运气。

4. 来个序言

文章到了这里,就要和大家说再见了,欢迎大家私信交流技术和分享,下期更新会将本期的思路用selenium进行自动化爬取,大家一起期待吧,由于本人水平有限,欢迎大家指出错误和进行更优代码的分享与交流。

看下面,欢迎大家留言关注交流,也欢迎大家关注我的微信公众号交流技术!!!

听说煎蛋网随手拍都是漂亮的小姐姐,今天就用python来爬取这些图片噢!!相关推荐

  1. Python 爬取煎蛋网随手拍

    百度百科对爬虫的定义为:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁, ...

  2. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  3. Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取

    写在前面 很高兴我这系列的文章写道第18篇了,今天写一个爬虫爱好者特别喜欢的网站煎蛋网http://jandan.net/ooxx,这个网站其实还是有点意思的,网站很多人写了N多的教程了,各种方式的都 ...

  4. B站小甲鱼零基础python视频P57爬取煎蛋网OOXX妹纸图代码修改

    问题描述 在B站看[小甲鱼]零基础入门学习PythonP57集时遇到了一些问题,现在煎蛋网的的图片每一页的网址和视频里的不太一样,看弹幕有的说能爬,有的说不能爬,也没有标明日期,当时挺懵逼的,不知道该 ...

  5. 用Python下载煎蛋网全站好看的小姐姐!

    转载来自:Python技术 春天到了,春光明媚,鸟语花香,各地都回温了!公园里面的花都开了,这几天都没有心情工作,准备周末出去游山玩水,踏踏青!先用Python爬取一波妹子图,摸摸鱼吧. 导入模块 首 ...

  6. Python爬虫 煎蛋网全站妹子图爬虫

    爬取流程 从煎蛋网妹子图第一页开始抓取: 爬取分页标签获得最后一页数字: 根据最后一页页数,获得所有页URL: 迭代所有页,对页面所有妹子图片url进行抓取:访问图片URL并且保存图片到文件夹. 开始 ...

  7. 煎蛋网妹子图爬虫(requests库实现)

    煎蛋网妹子图爬虫(requests库实现) 文章目录 煎蛋网妹子图爬虫(requests库实现) 一.前言 环境配置 二.完整代码 一.前言 说到煎蛋网爬虫,相比很多人都写过,我这里试着用reques ...

  8. 爬取煎蛋网中的妹子图

    看了小甲鱼爬取煎蛋网的视频,但是当时无论怎么写都写不出来,后来又看了一点其他视频,心血来潮把那段代码重写了一次,总算成功了,也算是解决一个心病吧,唯一美中不住的是还是不太会使用find函数,慢慢来吧, ...

  9. Python爬虫之煎蛋网妹子图(一)

    python爬虫是数据挖掘与数据处理中的重要一部分,为了让大家深入了解爬虫,这里会更新爬虫系列教程及例子.第一篇来送福利啦!!!http://jandan.net/ooxx,先进来看一眼,是不是动力十 ...

最新文章

  1. oracle 转化为整数,字符串转换成整数——从源码学习
  2. android api (83) —— InputMethodSession [输入法]
  3. 正在写一个VC的聊天软件
  4. Coolite Cool Study 3 MVC + Coolite 的例子
  5. 中国煤制甲醇产业发展形势与产量预测报告2022版
  6. 不定位成一个连接者,家装公司进军智能装饰的所有姿势都是错的
  7. Android保存设置的PreferenceActivity
  8. 微信jssdk开发,PHP,必要步骤
  9. 实现文件拖放的一种简洁方法
  10. python find函数 和index的区别_python list的index()和find()的实现
  11. java版如何使区块常加载,Java类加载机制 - suer27zhu的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. SpringBoot+Redis+Cookies实现高并发的购物车
  13. C#内存共享通讯示例
  14. 444项国家标准3月1日起实施
  15. Navicat Premium15安装与激活(完整激活版)
  16. Junglescout 正版账号共享 亚马逊卖家选品必备软件 junglescout插件同步升级
  17. mumu模拟器cpu设置_网易mc怎么提高fps
  18. MATLAB图像识别技术在棉花叶面病虫害识别上的
  19. 小程序页面onload(),onready()加载顺序
  20. Python中os.sep的用法

热门文章

  1. 基于Matlab的图像几何变换实现
  2. 求一个正整数所有正因数的和
  3. spring jpa的基本操作和理解
  4. 感恩节火鸡PPT模板-优页文档
  5. python编程题自动评分系统_用Python为你的「颜值评分」,看看人工智能为你打几分?...
  6. 展示一个一键分享插件
  7. 【117期分享】教学说课PPT模板免费下载
  8. 5.18 晴 魔兽,星际之门,越狱观后感
  9. 阿莫电子论坛 莫进明 涉嫌用户数量造假
  10. HP 小机定位I/O 卡,更换I/O 卡