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实现dnspod自动更新dns解析的方法
Feb 14 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
python web基础之加载静态文件实例
Mar 20 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
python实现WebSocket服务端过程解析
Oct 18 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
python 模块重载的五种方法
Apr 24 Python
Python异常类型以及处理方法汇总
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的字符串用法小结
2010/06/08 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
进一步探究Python中的正则表达式
2015/04/28 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
对标管理实施方案
2014/03/12 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
体育课课后反思
2014/04/24 职场文书
十佳青年事迹材料
2014/08/21 职场文书
三严三实心得体会范文
2014/10/13 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
Golang 切片(Slice)实现增删改查
2022/04/22 Golang