微信公众号原文链接

网易数读是一个数据新闻可视化栏目,致力于提供轻量化的阅读体验。其内容往往是结合时下新闻热点将相关数据可视化处理,并以精致的图文形式呈现出来。

举个栗子,大家感受一下人家的风格:

图片来源:网易数读

小笨聪觉得他们做的图表还是很美观清晰新颖的,就想全部下载下来学习学习。一张张手动下载好费事儿,嗯,人生苦短,我用 Python !

单张图片下载很简单,可以利用 requests 库的 get 请求,然后利用Response对象的content属性,将图片保存为二进制形式。即用下面5行代码就搞定:

import requests
url = 'http://cms-bucket.ws.126.net/2019/02/02/81b9ebced7514e66b4e969bab19af69c.png'
response = requests.get(url)
with open('2018百家姓.jpg', 'wb') as f:f.write(response.content)

这个方法也是初学 requests 库时都会学到的;并且,只要修改 url ,任意图片都可以下载。 但我们的目标是下载网易数读的所有图片,这时该怎么写呢?

1.requests获取网页内容

requests库是python里的爬虫利器,小笨聪前面的几篇文章都有它的身影。对于想要快速学习的伙伴,我给大家推荐一个链接:

https://cuiqingcai.com/5517.html(崔庆才个人博客)

https://2.python-requests.org//zh_CN/latest/index.html(官方文档)

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}def get_page_index():url = 'http://data.163.com/special/datablog/'try:response = requests.get(url,headers = headers)if response.status_code == 200:return response.text# print(response.text)  # 测试网页内容是否提取成功except RequestException:print('网页请求失败')return Nonedef get_page_detail(item):url = item.get('url')try:response = requests.get(url,headers = headers)if response.status_code == 200:# print(url) #测试url okreturn response.textexcept RequestException:print('网页请求失败')return None

2.解析网页内容

通过上面方法可以获取到 html 内容,接下来解析 html 字符串内容,从中提取出网页内的图片 url。解析和提取 url 的方法有很多种,常见的有5种,分别是:正则表达式、Xpath、BeautifulSoup、CSS、PyQuery。这里小笨聪采用了 BeautifulSoup。

def parse_page_index(html):pattern = re.compile(r'"url":"(.*?)".*?"title":"(.*?)".*?"img":"(.*?)".*?"time":"(.*?)".*?"comment":(.*?),',re.S)items = re.findall(pattern,html)# print(items)for item in items:yield{'url':item[0],'title':item[1],'img':item[2],'time':item[3],'comment':item[4][1:-1]}def parse_page_detail2(html):soup = BeautifulSoup(html,'lxml')items = soup.select('p > a > img')# print(len(items))title = soup.h1.stringfor i in range(len(items)):pic = items[i].attrs['src']yield{'title':title,'pic':pic,'num':i  # 图片添加编号顺序}

3.下载并保存图片

提取出的网址是一个 dict 字典,通过 dict 的 get 方法调用里面的键和值。然后建立文件夹存放已经过编号的图片。

def save_pic(pic):title = pic.get('title')title = re.sub('[\/:*?"<>|]','-',title)url = pic.get('pic')# 设置图片编号顺序num = pic.get('num')if not os.path.exists(title):os.mkdir(title)# 获取图片url网页信息response = requests.get(url,headers = headers)try:# 建立图片存放地址if response.status_code == 200:file_path = '{0}\{1}.{2}' .format(title,num,'jpg')# 文件名采用编号方便按顺序查看,而未采用哈希值md5(response.content).hexdigest()if not os.path.exists(file_path):# 开始下载图片with open(file_path,'wb') as f:f.write(response.content)print('该图片已下载完成',title)else:print('该图片%s 已下载' %title)except RequestException as e:print(e,'图片获取失败')return None

4.下载结果

随便点一个看看:

图片来源:网易数读

以上就是本次爬取网易数读图片的过程。

微信公众号“学编程的金融客”后台回复“网易数读”即可获得源码。(禁止商用,否则后果自负。本文所用图片侵删。

https://mp.weixin.qq.com/s?__biz=MzI1NzY0MTY3MA==&mid=2247484175&idx=1&sn=84ff6105f75169ea15b596c4a231f280&chksm=ea151ea6dd6297b0b022002c6af735cf2e5557faf8079d60372266f0f8b2366c83bb4ec77620&token=1892740331&lang=zh_CN#rd​mp.weixin.qq.com

往期推荐

1.流浪地球影评

2.北上广深租房图鉴

3.图虫网美女

4.猪小屁视频

5.拉勾网数据

你的点赞和关注就是对我最大的支持!

保存扫码关注公众号呗

网易数读所有精致图片,Python百行代码搞定!相关推荐

  1. 开源教程 「nlp-tutorial」!用百行代码搞定各类NLP模型

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 参与:思源.贾伟   来源:机器之心 NLP 的研究,从词嵌入到 CNN ...

  2. lstm代码_贼好理解,这个项目教你如何用百行代码搞定各类NLP模型

    机器之心报道 参与:思源.贾伟 NLP 的研究,从词嵌入到 CNN,再到 RNN,再到 Attention,以及现在正红火的 Transformer,模型已有很多,代码库也成千上万.对于初学者如何把握 ...

  3. python简单代码演示效果-10分钟教你用python 30行代码搞定简单手写识别!

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 手写笔记还是电子笔记好呢? 毕业季刚结束,眼瞅着2018级小萌新马上就要来了,老腊肉小编为了咱学弟学妹们的学习,绞尽脑汁准备编一套大学秘籍, ...

  4. 使用javafx百行代码搞定多边形面积计算(可下载)

    输出多边形面积 一.使用JavaFX Scene Builder 2.0制作界面,因为比较懒,直接偷工减料

  5. 企业微信机器人?用Python,几行代码搞定!

    直接上代码 # -*-coding:utf-8-*- # 刘文豪 # 大帅哥 import requests import timedef postmessage():url = "http ...

  6. python数学公式编辑工具_1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器...

    原标题:1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器 来源:量子位 关注前沿科技 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧箫 发自 凹非寺 ...

  7. python修改文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...

    原创:小dull鸟 python数据分析之禅 原文链接: 5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了​mp.weixin.qq.com 有时候我们做数据可视化并 ...

  8. python做事件研究法_35行代码搞定事件研究法(上)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 这期大猫课堂将会教大家如何用35行R代码写出最有效率的事件研究法. 注意,本代码主要使用data.table完成,关于data.table包的相应知识 ...

  9. 万万想不到 10行代码搞定一个决策树

    01决策树模拟实验 文章目录 01决策树模拟实验 要求 决策树简单介绍 搭建环境 产生数据集 划分训练集和测试集 生成决策树 Cross-Validation法 可视化决策树 10行代码搞定决策树 要 ...

最新文章

  1. XAMPP配置httpd-vhosts.conf后无法启动
  2. JPA 2.1: What is new
  3. HSIC简介:一个有意思的判断相关性的思路
  4. Mybatis-自定义类型处理器
  5. mysql日期格式化季度_mysql中常用日期比较与计算函数
  6. 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
  7. php判断是否是文件_PHP判断文件是否为图片文件的方法总结
  8. python中pip的安装与使用
  9. android动态添加圆,Android开发中TextView 实现右上角跟随文本动态追加圆形红点
  10. CSS布局大全-案例
  11. JAVA经纬度互转、计算工具类
  12. 无刷直流电动机矢量控制(二)——无刷直流电机的工作原理及其内部结构
  13. 供应链金融之——预付款融资模式
  14. Android学习记录
  15. 调研 FlinkSql功能测试及实战演练
  16. 美食杰项目 -- 菜品信息(五)
  17. IT人必须掌握的面试技巧
  18. 适配80mm打印机网页打印自动高度问题
  19. LSM-tree基本原理及应用
  20. 畅游CTO洪晓健:BW和CE3游戏引擎各取所长

热门文章

  1. 【原创】技术员 Ghost Win 10 X86 企业贺岁版2018
  2. 共享单车之数据可视化
  3. “死亡之星”——“阿波非斯”
  4. (java)给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
  5. 大牛教你这样阅读android源码
  6. rrpp协议如何修改_RRPP快速环网保护协议
  7. 机器学习从入门到创业手记-2.1.1 线性回归与房价还涨么
  8. python爬取王者_Python爬取王者荣耀英雄图片及装备!你玩吗?
  9. 人人商城 邀请人 成功购买会员卡之后返现
  10. IOS开发之延时执行的几种方法