当前位置:   article > 正文

动态网页数据获取实战_wininet动态网站数据

wininet动态网站数据

写在开始

做了好久的鸽子了,主要是上几篇的博客的阅读量实在是惨淡。上几篇博客多事笔记内容为主,面向没有接触过该领域的小白,看来不太受欢迎,也可能是写得不咋地(小声逼逼)。经过几个月的积累,又做了不少的项目,是时候再写点东西啦!

动态网页的数据怎么获取呢?这篇博客手把手教你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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

这样就把数据爬下来啦,并且保存在本地,保存成csv文件方便后续的读取与处理

总结

本次就简简单单地实现了一个数据的爬取工作,我不给太多代码是希望小伙伴们能够看着这一个例子能够举一反三。

对了,上面不是还提供了一个网页新闻的网页嘛,就供大家练习使用啦!说它是进阶版肯定是有道理的,就等着你们自己去探索啦!

如果之后有机会的话,对这篇爬取的数据进行处理可视化的教程也会出一篇博客,敬请期待!

结语

如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/399070
推荐阅读
相关标签
  

闽ICP备14008679号