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中的字典使用分享
Jul 31 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
python如何制作缩略图
Apr 30 Python
Python通过cv2读取多个USB摄像头
Aug 28 Python
详解Python3定时器任务代码
Sep 23 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
python next()和iter()函数原理解析
Feb 07 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
keras中的History对象用法
Jun 19 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
PHP入门
2006/10/09 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php递归json类实例
2014/12/02 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
25道Java面试题集合
2013/05/21 面试题
销售心得体会
2014/01/02 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
公司租房协议书范本
2014/10/08 职场文书
十七岁的单车观后感
2015/06/12 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
MySQL中order by的执行过程
2022/06/05 MySQL