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入门_浅谈逻辑判断与运算符
May 16 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
对Python中9种生成新对象的方法总结
May 23 Python
python 把列表转化为字符串的方法
Oct 23 Python
python numpy实现文件存取的示例代码
May 26 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
简单了解python的内存管理机制
Jul 08 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
python对XML文件的操作实现代码
Mar 27 Python
判断Python中的Nonetype类型
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
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
jquery中radio checked问题
2015/03/16 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Python+微信接口实现运维报警
2016/08/27 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Python----数据预处理代码实例
2019/03/20 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
材料化学应届生求职信
2013/10/09 职场文书
总务岗位职责
2013/11/19 职场文书
班主任新年寄语
2014/04/04 职场文书
销售提升方案
2014/06/07 职场文书
班组长安全工作职责
2014/07/15 职场文书
2014年营业员工作总结
2014/11/18 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
《海上日出》教学反思
2016/02/23 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android