赞
踩
做了好久的鸽子了,主要是上几篇的博客的阅读量实在是惨淡。上几篇博客多事笔记内容为主,面向没有接触过该领域的小白,看来不太受欢迎,也可能是写得不咋地(小声逼逼)。经过几个月的积累,又做了不少的项目,是时候再写点东西啦!
动态网页的数据怎么获取呢?这篇博客手把手教你get数据。
https://news.qq.com/zt2020/page/feiyan.htm#/global
https://wp.m.163.com/163/page/news/virus_report/index.html?nw=1&anw=1
上面两个网站就是我们本次教学的数据来源啦!不过这两个网站还有一点点的不一样,腾讯新闻的爬取难度是入门级,网易新闻的爬取是进阶版。
我们这次先从入门级的来,毕竟要学会走才能跑嘛。
找到要爬取的源网站之后,做的第一件事永远是分析网页结构,这也是最复杂的一步,需要不断地尝试去积累经验。
一般的爬虫教程都是在静态网页上做的,而我们这次要面对的就是动态网页。动态网页的爬取方式和静态网页的爬取方式有着蛮大的不同,废话不多说,动手吧!
1.网页F12大法
对一个网页进行分析,对于静态网页来说是看源代码,如下图所示:
红框标出的可是神器,你只要能在前端网页看到的元素,你都可以用这个神器找到某元素在源代码中的位置,不用让你像剥洋葱一样,一层一层地拨开它的心,估计你真的会流泪!
但是当我们看到页面下面的图表的时候,这个神器就不管用了,因为前端的图表已经踏入另外一个领域了,就是动态网页。比如下面这一张图
你去刚刚的神器去找,你会得到下面的这串代码,图表中的信息这么多,咋代码就这么一行?
因为有些东西被图表给藏起来了,是啥呢?没错,就是数据!我们要用爬虫挖掘的宝藏就是这个!但是知道有宝藏了,它藏在哪里呢?那么就教你动态网页的“寻龙诀”!
在F12页面找到Network的界面,如下图所示:
为啥一篇空白呢?因为这个时候网页页面已经渲染完了,我们需要的就是轻轻敲一下F5,让页面重新刷新,将页面渲染的过程捕获。
好的,这样我们就找到了藏宝之地,接下来就是掘地三尺,把数据挖出来!
经过一番苦苦搜寻,每个文件一个个点开查看,我们挖到最终的宝藏!
点开第一个文件,发现网页的URL是这样的,这个URL带有JQuery的参数,不能被我们所用,需要把后面的参数删掉
看下数据的格式,是json的数据格式,这是十分常见的动态网页数据格式,对读取操作十分友好。可能有些小伙伴第一次看到这种格式的数据,所以我们用点工具让数据变得好看些!
工具网址
在线JSON解析
把网页中的JSON数据全选,然后复制到工具网站就发现格式变得清晰了。
有些小伙伴对数据处理可能有一定的了解,会发现其实这就是一个复合字典。
2.编码实现
前面铺垫了这么多网页解析的内容,如果大家耐着性子看完了,那么希望你能从中有所收获。
当个CV战士是没有什么意思的,毕竟每次你遇到的东西是不一样的,要知道怎样去解决问题,然后用代码实现才是核心。
下面就实现一个爬取各项数据,并且本地保存csv文件
import requests import json import csv def china_total_data(): chinatotal_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_other' response = requests.get(chinatotal_url).json() # 发出请求并json化处理 # 将获取到的json格式的字符串类型数据转换为python支持的字典类型数据 data = json.loads(response['data']) chinaDayList = data["chinaDayList"] with open("病例.csv", "w+", newline="") as csv_file: writer = csv.writer(csv_file) header = ["date", "confirm", "suspect", "dead", "heal"] # 定义表头 writer.writerow(header) for i in range(len(chinaDayList)): data_row1 = [chinaDayList[i]["date"], chinaDayList[i]["confirm"], chinaDayList[i]["suspect"], chinaDayList[i]["dead"], chinaDayList[i]["heal"]] writer.writerow(data_row1) if __name__ == '__main__': china_total_data()
这样就把数据爬下来啦,并且保存在本地,保存成csv文件方便后续的读取与处理
本次就简简单单地实现了一个数据的爬取工作,我不给太多代码是希望小伙伴们能够看着这一个例子能够举一反三。
对了,上面不是还提供了一个网页新闻的网页嘛,就供大家练习使用啦!说它是进阶版肯定是有道理的,就等着你们自己去探索啦!
如果之后有机会的话,对这篇爬取的数据进行处理可视化的教程也会出一篇博客,敬请期待!
如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。