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私有属性和方法实例分析
Jan 15 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
Python与Java间Socket通信实例代码
Mar 06 Python
django实现用户登陆功能详解
Dec 11 Python
python编写Logistic逻辑回归
Dec 30 Python
详解Python做一个名片管理系统
Mar 14 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
pytorch 实现查看网络中的参数
Jan 06 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python实现简单的猜单词
Jun 15 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
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
Angular实现响应式表单
2017/08/04 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
python requests 使用快速入门
2017/08/31 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
使用Python设计一个代码统计工具
2018/04/04 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python 实现目录复制的三种小结
2019/12/04 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2015年计划生育责任书
2015/05/08 职场文书
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers