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 基础学习教程
Feb 08 Python
python中 ? : 三元表达式的使用介绍
Oct 09 Python
python动态监控日志内容的示例
Feb 16 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
使用django实现一个代码发布系统
Jul 18 Python
python sorted函数的小练习及解答
Sep 18 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
什么是python的列表推导式
May 26 Python
python实现excel公式格式化的示例代码
Dec 23 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
一段php加密解密的代码
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP 实例化类的一点摘记
2008/03/23 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
javascript 文档的编码问题解决
2009/03/01 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
python实现的各种排序算法代码
2013/03/04 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
红领巾广播站广播稿
2014/02/01 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
爱情保证书大全
2014/04/29 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书