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求导数的方法
May 09 Python
浅谈Python中range和xrange的区别
Dec 20 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
Python实现word2Vec model过程解析
Dec 16 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Python Pandas解析读写 CSV 文件
Apr 11 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
python装饰器初探(推荐)
2016/07/21 Python
python与C互相调用的方法详解
2017/07/14 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python实现简单加密解密机制
2019/03/19 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python如何实现视频转代码视频
2019/06/17 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
一道Delphi上机题
2012/06/04 面试题
热情服务标语
2014/10/07 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
MySQL transaction事务安全示例讲解
2022/06/21 MySQL