赞
踩
Python 微博爬取实战(一)爬虫参数:如何获得cookie,实现爬虫登陆爬取
Python微博爬取实战(二)解析微博结构、爬取每页微博
Python微博爬取实战(三)爬虫获得的json格式数据如何处理
Python微博爬取实战(四)微博爬虫具体实现
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…}
假设我们已经完成这些事情:
OK,那么进行下一步
2.如何解析json格式数据——微博为例
我们以一个任务为例,后面如果有需求再增加几个例子
比如我要获得微博总页数,那么思路应该是这样子的:
看一下网页的json结构:
如何生成这种json格式浏览图参看:https://blog.csdn.net/weixin_43718786/article/details/108364219
其中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 © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。