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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
利用Python如何生成便签图片详解
Jul 09 Python
python+mysql实现学生信息查询系统
Feb 21 Python
CentOS7安装Python3的教程详解
Apr 10 Python
Python assert关键字原理及实例解析
Dec 13 Python
基于Tensorflow一维卷积用法详解
May 22 Python
Python文件夹批处理操作代码实例
Jul 21 Python
python中如何使用虚拟环境
Oct 14 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 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
一个简洁的多级别论坛
2006/10/09 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
JS的replace方法介绍
2012/10/20 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[00:10]神之谴戒
2019/03/06 DOTA
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
深入浅析python继承问题
2016/05/29 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python做反被爬保护的方法
2019/07/01 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
优秀教师主要事迹
2014/02/01 职场文书
玲玲的画教学反思
2014/02/04 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
路政管理求职信
2014/06/18 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
邀请函格式范文
2015/02/02 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang