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面向对象编程中关于类和方法的学习笔记
Jun 30 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
python如何爬取动态网站
Sep 09 Python
python如何实现word批量转HTML
Sep 30 Python
python matlab库简单用法讲解
Dec 31 Python
python requests库的使用
Jan 06 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
Python内建数据结构详解
2016/02/03 Python
python简单实现刷新智联简历
2016/03/30 Python
Python自定义线程类简单示例
2018/03/23 Python
Python错误处理操作示例
2018/07/18 Python
如何提高python 中for循环的效率
2020/04/15 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
html5新特性与用法大全
2018/09/13 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
科研先进个人典型材料
2014/01/31 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
学习委员竞选稿
2015/11/20 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
Python3.10的一些新特性原理分析
2021/09/15 Python
redis缓存存储Session原理机制
2021/11/20 Redis