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实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
浅谈python字符串方法的简单使用
Jul 18 Python
python抓取网页中链接的静态图片
Jan 29 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python生成n个元素的全组合方法
Nov 13 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
Python函数装饰器实现方法详解
Dec 22 Python
python实现贪吃蛇游戏
Mar 21 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 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
escape unescape的php下的实现方法
2007/04/27 PHP
什么是MVC,好东西啊
2007/05/03 PHP
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
2014年创卫实施方案
2014/02/18 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
css3带你实现3D转换效果
2022/02/24 HTML / CSS
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技