爬虫:json()数据解析(Request Method:GET)

2023-10-27

有一些网页会直接把所有的关键信息都放在HTML中请求,尤其是一些比较老(或比较轻量)的网站,我们用requests和BeautifulSoup就能解决它们;比如豆瓣。

而有些数据请求则通过Fetch/XHR传送,这些数据并不能直接在HTML页面中获取到,那么我们就需要用到Network功能:

1、Network功能简介

对请求进行分类,我们最常用的有以下:

夹在第2行和第1行中间的,是一个时间轴。记录什么时间,有哪些请求。 

 

2、什么是Fetch/XHR?

 在Network中有一类非常重要的请求叫做Fetch/XHR。

我们平时使用浏览器上网的时候,经常有这样的情况:浏览器上方,它所访问的网址没变,但是网页里却新加了内容。这个,叫做Ajax技术(应用这种技术,好处是显而易见的——更新网页内容,而不用重新加载整个网页,又省流量又省时间的)。

这种技术在工作的时候,会创建一个XHR(或是Fetch)对象,然后利用XHR对象来实现,服务器和浏览器之间传输数据。在这里,XHR和Fetch并没有本质区别,只是Fetch出现得比XHR更晚一些,但作用都是一样的。主要结构如下:

在General中有Request URL,使用该URL即可获取到通过Fetch/XHR发送的请求内容,但是获取到的内容是Str类型的字典/列表。

 

3、什么是json()

json是另一种组织数据的格式,长得和Python中的列表/字典非常相像。它和html一样,常用来做网络数据传输。刚刚我们在XHR里查看到的列表/字典,严格来说其实它不是列表/字典,它是json。

简单来说,在Python语言当中,json是一种特殊的字符串,这种字符串特殊在它的写法——它是用列表/字典的语法写成的。

或许你会有疑问:那直接写成列表/字典不就好了,为什么要把它表示成字符串?答案很简单,因为不是所有的编程语言都能读懂Python里的数据类型(如,列表/字符串),但是所有的编程语言,都支持文本(比如在Python中,用字符串这种数据类型来表示文本)这种最朴素的数据类型。

如此,json数据才能实现,跨平台,跨语言工作。

而json和XHR之间的关系:XHR用于传输数据,它能传输很多种数据,json是被传输的一种数据格式。就是这样而已。

4、如何解析json数据

我们可以将json格式的数据,转换成正常的列表/字典,也可以将列表/字典,转换成json。

①json格式转换成列表/字典

import requests

res = requests.get('http://……')
print(res.json())

②将列表/字典转换成json格式

import requests

a = {'姓名': '张三', '性别': '男'}
print(json.dumps(a))
print(type(a))

5、案例

import requests
# Fetch/XHR对象headers-General-Request URL
url = 'https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?_=1646270844314&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=1152921504801487135&g_tk_new_20200303=2006272574&g_tk=2006272574&hostUin=0&is_xml=0&key=毛不易'
# 头信息
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'}
# 获取数据
res = requests.get(url, headers=header)
# 将json格式数据转换为字典/列表
res = res.json()
#从字典/列表中找到对应需要的数据
list_song = res['data']['song']['itemlist']
for song in list_song:
    print(song['name'])

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫:json()数据解析(Request Method:GET) 的相关文章

随机推荐

  • 助推打造全球研发中心城市

    阿里 社招 一面 面不动了 真的面不动了一 项目挑一个你觉得最有挑战性的细说 有些细节被质疑了 嘴在前面飞脑子在后面追 以后说每一句话都要小心 笑cry 二 八股1 聚簇索引和非 题解 检索产品名称和描述 一 select prod nam
  • 3D关键点检测(2020-2017)

    3D关键点检测 1 3D关键点检测之PoseDRL Deep Reinforcement Learning for Active Human Pose Estimation AAAI2020 这篇文章可能与我们通常所处理的姿态估计任务略有不
  • 【BEV】BEVDet

    BEVDet 解析 BEVDet 模型 bevdet r50 训练配置 Scale NMS 优化配置 推理记录 注册 随机种子 总结 BEVDet BEVDet继承于CenterPoint gt MVTwoStageDetector 模型实
  • 射频工程师笔记---射频通信基础

    文章更新或问题可关注本人公众号 回顾一下移动通信技术的发展 其实是互联网和通信技术的融合过程 在这个过程中 很多应用都在不断加入其中 比如计算机跟通信的融合产生了互联网 互联网跟手机的融合带来了移动互联网 手机可以看杂志 看视频 听音乐 于
  • SpringCLoud——服务的拆分和远程调用

    服务拆分 服务拆分注意事项 一般是根据功能的不同 将不同的服务按照功能的不同而分开 微服务拆分注意事项 不同微服务 不要重复开发相同业务 微服务数据独立 不要访问其他微服务的数据库 微服务可以将自己的业务暴露为接口 供其他微服务调用 远程调
  • C++ 数据结构与算法(五)(哈希表)

    哈希表 1 定义 哈希表 Hash table 也称散列表 是根据关键码的值而直接进行访问的数据结构 一般哈希表都是用来快速判断一个元素是否出现集合里 只需要在初始化时用哈希函数 hash function 将这些元素映射在哈希表的索引上
  • WJ的Direct3D简明教程2:Render-To-Texture

    转载请注明 来自http blog csdn net skyman 2001 Rendering to a texture is one of the advanced techniques in Direct3D On the one h
  • Unity绘制户型(一)

    户型绘制主要对象数据 点 线 面 部件 门窗 主要难点是通过绘制的点寻找闭合多边形 多边形的生成 3D墙体的生成 门窗要在墙体上留下孔洞这四个功能 这篇文章我只写前两个问题 后面来两个问题单独再写一篇文章 1 如何寻找闭合多边形 我的方法是
  • 内容管理系统测试实战

    使用django和restframework开发接口 使用postman测试接口 使用unittest和requests模块测试接口 目录 Django安装 Django Rest Framework 创建API应用 数据库迁移 创建超级管
  • C++11中pair的用法

    概述 pair可以将两个数据组合成一种数据类型 C 标准库中凡是必须返回两个值的函数都使用pair pair有两个成员变量 分别是first和second 由于使用的struct而不是class 因此可以直接访问pair的成员变量 基本用法
  • Python_某宝某东秒杀抢购

    纯学习分享 只用于学习用途 请勿用于任何商业用途 本人不承担任何责任 视频编写过程 某宝秒杀程序 某宝源码 from selenium import webdriver from selenium webdriver common by i
  • springboot配置shiro多项目实现session共享的详细步骤

    springboot配置shiro多项目实现session共享的详细步骤 项目的配置步骤我已写到另一篇文章中 shiro框架 多项目登录访问共享session的实现 springboot redis shiro 的实现项目已共享到GitHu
  • 关于Tomcat端口被占用的情况

    今天打开eclipse突然发现运行不了 报错的提示为 Several ports 8005 8080 8009 required by Tomcat v7 0 Server at localhost are already in use 有
  • Android studio遇到问题:Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

    前言 在使用android studio时 配置模拟器的时候一直在报错这个 然后网上找到问题 并实际解决了问题 在这里记录下 目录 问题原因 没有配置环境的情况下 是因为他默认找的是这个路径的AVD 问题很明显了 中文路径导致的 C Use
  • Vue路由 传参几种方式

    动态路由传参 path detail username name a component gt import components Detail vue
  • windows server 2012 安装gooderp

    概述 这是我安装的第一个erp系统 为什么选择gooderp 因为它是开源的 个人认为还是不错的一个erp系统 windows上安装完全是傻瓜式的安装 介绍下环境 我使用的是阿里云的windows server 2012 为了安全呢最好更新
  • 前端浏览器常见兼容性问题及解决方案

    目录 1 最常见的 每个浏览器的默认margin padding大小都不同 当设置定位时会有些许差异 2 图片默认有间距 当几个img标签放到一起时 有些浏览器会有默认间距 加上第一条的设置的通配符样式也无用 3 min height问题
  • mc服务器查看死亡位置,我的世界查询死亡地点指令

    发布时间 2016 06 01 很多朋友在玩我的世界这款游戏时总会有各种意外死亡发生 今天蚕豆网小编带给大家的是我的世界死亡后怎么才能使东西不掉落的方法 游戏中的设定死亡后 你身上的物品会掉落在地上 需要快速的捡回 要不然东西就会消失 那么
  • goto语句在工作当中的用法

    前言 goto语句在C语言编程中是比较少用的 在学习C语言时老师也告诉要少用 有的甚至说别用 后来再工作当中 看到了前辈写的代码里用了goto语句 顿时感到goto语句的精妙 遂在此记录 goto语句能使用 不过要慎用 应为C语言的代码中大
  • 爬虫:json()数据解析(Request Method:GET)

    有一些网页会直接把所有的关键信息都放在HTML中请求 尤其是一些比较老 或比较轻量 的网站 我们用requests和BeautifulSoup就能解决它们 比如豆瓣 而有些数据请求则通过Fetch XHR传送 这些数据并不能直接在HTML页