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 循环while和for in简单实例
Aug 16 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
python更改已存在excel文件的方法
May 03 Python
利用python将图片版PDF转文字版PDF
May 03 Python
深入了解Django View(视图系统)
Jul 23 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
Python 全局空间和局部空间
Apr 06 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应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
vue项目实战总结篇
2018/02/11 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python用户管理系统
2018/03/13 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python中字符串的操作方法大全
2018/06/03 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
python将视频转换为全字符视频
2019/04/26 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
诚实守信道德模范事迹材料
2014/08/15 职场文书
学生评语集锦
2015/01/04 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
心理学培训心得体会
2016/01/22 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python