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


Posted in Python onDecember 16, 2019

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

今天,试着爬取了煎蛋网的图片。

用到的包:

  • urllib.request
  • os

分别使用几个函数,来控制下载的图片的页数,获取图片的网页,获取网页页数以及保存图片到本地。过程简单清晰明了

直接上源代码:

import urllib.request
import os


def url_open(url):
  req = urllib.request.Request(url)
  req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36')
  response = urllib.request.urlopen(url)
  html = response.read()

  return html

def get_page(url):
  html = url_open(url).decode('utf-8')

  a = html.find('current-comment-page')+23
  b = html.find(']',a)

  return html[a:b]


def find_imgs(url):
  html = url_open(url).decode('utf-8')
  img_addrs = []

  a = html.find('img src=')

  while a != -1:
    b = html.find('.jpg',a ,a+255)
    if b != -1:
      img_addrs.append('https:'+html[a+9:b+4]) # 'img src='为9个偏移 '.jpg'为4个偏移
    else:
      b = a+9
    a = html.find('img src=', b)

  return img_addrs


def save_imgs(folder, img_addrs):
  for each in img_addrs:
    filename = each.split('/')[-1]
    with open(filename, 'wb') as f:
      img = url_open(each)
      f.write(img)
    print(img_addrs)

def download_mm(folder = 'xxoo', pages = 5):
  os.mkdir(folder)
  os.chdir(folder)

  url = 'http://jandan.net/ooxx/'
  page_num = int(get_page(url))

  for i in range(pages):
    page_num -= i
    page_url = url + 'page-'+ str(page_num) + '#comments'
    img_addrs = find_imgs(page_url)
    save_imgs(folder, img_addrs)

if __name__ == '__main__':
  download_mm()

其中在主函数download_mm()中,将pages设置在了5面。

本来设置的是10,但是在程序执行的过程中。出现了404ERROR错误

即imgae_url出现了错误。尝试着在save_img()函数中加入了测试代码:print(img_addrs),

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

想到会不会是因为后面页数的图片,img_url的格式出现了改变,导致404,所以将pages改成5,

再次运行,结果没有问题,图片能正常下载:

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

仔细观察发现,刚好是在第五面的图片往后,出现了不可下载的问题(404)。所以在煎蛋网上,我们直接跳到第6面查看图片的url。

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

上图是后5面的图片url,下图是前5面的图片url

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

而源代码中,寻找的图片url为使用find()函数,进行定为<img src=‘'> <.jpg>中的图片url,所以后5面出现的a href无法匹配,即出现了404 ERROR。如果想要下载后续的图片,需要重新添加一个url定位

即在find中将 img src改成 a href,偏移量也需要更改。

总结:

使用find()来定位网页标签确实太过low,所以以后在爬虫中要尽量使用正则表达式和Beautifulsoup包来提高效率,而这两项我还不是特别熟,所以需要更多的训练。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python动态语言与鸭子类型详解
Jul 01 Python
python各层级目录下import方法代码实例
Jan 20 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
python opencv肤色检测的实现示例
Dec 21 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
python实现监控阿里云账户余额功能
Dec 16 #Python
Python实现密码薄文件读写操作
Dec 16 #Python
如何基于Python实现电子邮件的发送
Dec 16 #Python
Python如何基于selenium实现自动登录博客园
Dec 16 #Python
Python正则表达式急速入门(小结)
Dec 16 #Python
如何基于Python制作有道翻译小工具
Dec 16 #Python
django框架单表操作之增删改实例分析
Dec 16 #Python
You might like
一个PHP并发访问实例代码
2012/09/06 PHP
php广告加载类用法实例
2014/09/23 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
javascript实现微信分享
2014/12/23 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
vue-router项目实战总结篇
2018/02/11 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
Python ZipFile模块详解
2013/11/01 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
大学生职业生涯规划方案
2014/01/03 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
家长会学生演讲稿
2014/04/26 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
品酒会策划方案
2014/05/26 职场文书
自我评价优缺点范文
2015/03/11 职场文书
活动总结模板大全
2015/05/11 职场文书
妈妈别哭观后感
2015/06/08 职场文书
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
详解pytorch创建tensor函数
2022/03/22 Python