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中的代码编码格式转换问题
Jun 10 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python实现分段线性插值
Dec 17 Python
实时获取Python的print输出流方法
Jan 07 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
python属于跨平台语言码
Jun 09 Python
python 下载m3u8视频的示例代码
Nov 11 Python
10张动图学会python循环与递归问题
Feb 06 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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
非常好的php目录导航文件代码
2006/10/09 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
Yii分页用法实例详解
2014/12/04 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
Delphi软件工程师试题
2013/01/29 面试题
四川成都导游欢迎词
2014/01/18 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS