Python爬虫之网页图片抓取的方法


Posted in Python onJuly 16, 2018

一、引入

这段时间一直在学习Python的东西,以前就听说Python爬虫多厉害,正好现在学到这里,跟着小甲鱼的Python视频写了一个爬虫程序,能实现简单的网页图片下载。

二、代码

__author__ = "JentZhang"
import urllib.request
import os
import random
import re
def url_open(url):
  '''
  打开网页
  :param url:
  :return:
  '''
  req = urllib.request.Request(url)
  req.add_header('User-Agent',
          'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36')
  # 应用代理
  '''
  proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
  proxy = random.choice(proxyies)
  proxy_support = urllib.request.ProxyHandler({"http": proxy})
  opener = urllib.request.build_opener(proxy_support)
  urllib.request.install_opener(opener)
  '''
  response = urllib.request.urlopen(url)
  html = response.read()
  return html
def save_img(folder, img_addrs):
  '''
  保存图片
  :param folder: 要保存的文件夹
  :param img_addrs: 图片地址(列表)
  :return:
  '''
  # 创建文件夹用来存放图片
  if not os.path.exists(folder):
    os.mkdir(folder)
  os.chdir(folder)
  for each in img_addrs:
    filename = each.split('/')[-1]
    try:
      with open(filename, 'wb') as f:
        img = url_open("http:" + each)
        f.write(img)
    except urllib.error.HTTPError as e:
      # print(e.reason)
      pass
  print('完毕!')
def find_imgs(url):
  '''
  获取全部的图片链接
  :param url: 连接地址
  :return: 图片地址的列表
  '''
  html = url_open(url).decode("utf-8")
  img_addrs = re.findall(r'src="(.+?\.gif)', html)
  return img_addrs
def get_page(url):
  '''
  获取当前一共有多少页的图片
  :param url: 网页地址
  :return:
  '''
  html = url_open(url).decode('utf-8')
  a = html.find("current-comment-page") + 23
  b = html.find("]</span>", a)
  return html[a:b]
def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):
  '''
  主程序(下载图片)
  :param folder:默认存放的文件夹
  :param pages: 下载的页数
  :return:
  '''
  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_img(folder, img_addrs)
if __name__ == "__main__":
  download_mm()

三、总结

由于代码中访问的网址已经运用了反爬虫的算法。所以已经爬不到想要的图片啦,so,就当是记了个爬虫的笔记吧。仅供学习参考[捂脸]。。。。

最后:我把jpg格式换成gif,还能爬到可怜的一张gif图:

Python爬虫之网页图片抓取的方法 

第一张正是反爬虫机制的一个图片占位符,完全没有任何内容

总结

以上所述是小编给大家介绍的Python爬虫之网页图片抓取的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python模块之time模块(实例讲解)
Sep 13 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
Python依赖包整体迁移方法详解
Aug 15 Python
python range实例用法分享
Feb 06 Python
Python学习之os模块及用法
Jun 03 Python
详解python 内存优化
Aug 17 Python
python编辑用户登入界面的实现代码
Jul 16 #Python
python 反向输出字符串的方法
Jul 16 #Python
解决python3 urllib 链接中有中文的问题
Jul 16 #Python
如何用Python实现简单的Markdown转换器
Jul 16 #Python
详解python里的命名规范
Jul 16 #Python
Python 2.7中文显示与处理方法
Jul 16 #Python
Python定时任务sched模块用法示例
Jul 16 #Python
You might like
PHP 基本语法格式
2009/12/15 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
JS作用域深度解析
2016/12/29 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python自动识别文本编码格式代码
2019/12/26 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
携程英文网站:Trip.com
2017/02/07 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
铁路个人事迹材料
2014/01/30 职场文书
《日月潭》教学反思
2014/02/28 职场文书
民族精神月活动总结
2014/08/28 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
党员检讨书范文
2014/12/27 职场文书