Python微博爬取实战(三)爬虫获得的json格式数据如何处理

您所在的位置:网站首页 库里微博是什么 Python微博爬取实战(三)爬虫获得的json格式数据如何处理

Python微博爬取实战(三)爬虫获得的json格式数据如何处理

2024-06-14 09:09| 来源: 网络整理| 查看: 265

系列文章

Python 微博爬取实战(一)爬虫参数:如何获得cookie,实现爬虫登陆爬取 Python微博爬取实战(二)解析微博结构、爬取每页微博 Python微博爬取实战(三)爬虫获得的json格式数据如何处理 Python微博爬取实战(四)微博爬虫具体实现

处理json数据 上一此在介绍如何获取cookie时候已经说过,在网页开发者功能里面可以对网页进行抓包分析,详见:

Python 微博爬取实战(一)爬虫参数:如何获得cookie,实现爬虫登陆爬取

1.那么问题来了,什么是json数据呢? 先介绍一下历史: 过去传统网站开发,网站就像电脑里面的文件目录,用户通过浏览器直接访问服务器内文件。 在这里插入图片描述 (侵删) 就像我们电脑的某个盘,随着使用时间变久,文件越来越多,会发现文件越来越难以管理。出现文件寻找难度大,文件损坏,污染数据等问题。 所以我们构建数据库作为服务器的数据管理内核,来支撑BS架构,数据管理更方便的同时,由于隔离了浏览器和数据的直接接触,安全性也大大提高。 在这里插入图片描述 上图来源:https://www.cnblogs.com/animo-2020/p/12744176.html(侵删) 我们可以简单类比数据库为一个函数(function),我们的浏览器类比主函数,当浏览器向数据库内传入某些关键参数时,数据库return一些数据。 那数据是怎么return的呢,体现在浏览器抓包中的json格式数据。 其形式为(其中每个obj可以进行扩充,形成了多层嵌套)

{“key1”:obj,“key2”:[“key1”:object,obj,obj…],“key3”:obj…}

如果我们想要获取其中的object,用什么方法比较好呢? 以python为例 观察其格式可以发现,它是字典(dic)和列表(list)两种数据格式构成的,因此我们可以用解析这两种数据的方法来解析。 python提供了json包来辅助我们进行解析,还是来看上面微博的例子。

假设我们已经完成这些事情:

正确向服务器发送参数骗过服务器了,服务器向我们返回了正确的数据。

OK,那么进行下一步 2.如何解析json格式数据——微博为例

我们以一个任务为例,后面如果有需求再增加几个例子 比如我要获得微博总页数,那么思路应该是这样子的:

获得总微博数量 向上取整 解析json数据 把总微博数量除以每页的微博量 总页数

看一下网页的json结构: 在这里插入图片描述 如何生成这种json格式浏览图参看:https://blog.csdn.net/weixin_43718786/article/details/108364219 其中total即为总微博数量。

分析一下 total第一层被包裹在一个字典(dic)的键值(key):data里面 第二层还是在一个字典(dic)的键值(key):cardlistInfo里面 第三层为键值(key):total里面

如果有list加下标index即可,当然这个案例里并没有出现需要用到list的情况。

js[‘data’][‘cardlistInfo’].get(‘total’, 0)

所以本例可以这样写,get()里面的0代表total如果有列表选取第一个值。 开始代码: 在request函数模块里面,将返回的数据进行处理:

r = requests.get(url, params=params) return r.json() #返回json数据

在下一步里面,js变量将接收来自上个模块返回的数据(即r.json())

js = self.get_json(params) if js['ok']: user_info['statuses_count'] = js['data']['cardlistInfo'].get('total', 0) #获取总条数 print('共{}条' .format(user_info['statuses_count'])) page_count = int(math.ceil(weibo_count / 10.0)) #总页数

page_count 即为总页数,此案例演示完毕



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3