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 03 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
Python离线安装PIL 模块的方法
Jan 08 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
简单了解django文件下载方式
Feb 10 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python编写单元测试代码实例
Sep 10 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
判断Python中的Nonetype类型
May 25 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python中取整数的几种方法
Nov 07 Python
python获取字符串中的email
Mar 31 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
APMServ使用说明
2006/10/23 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python matlibplot绘制3D图形
2018/07/02 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
利用python画出AUC曲线的实例
2020/02/28 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
学校搬迁方案
2014/06/15 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
2015年维修工作总结
2015/04/25 职场文书
新员工辞职信范文
2015/05/12 职场文书
2016银行求职自荐信
2016/01/28 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
详解MySQL集群搭建
2021/05/26 MySQL