python爬虫之异步加载

python爬虫之异步加载异步加载一.AJAX技术介绍二.JSON介绍三.异步GET与POST请求一.AJAX技术介绍AJAX是AsynchronousJavaScriptAndXML的首字母缩写,意为异步JavaScript与XML。使用AJAX技术,可以在不刷新网页的情况下更新网页数据。使用AJAX技术的网页,一般会使用HTML编写网页的框架。在打开网页的时候,首先加载的是这个框架。剩下的部分将会在框架加载完成以后再通过JavaScript从后台加载。AJAX的一种常见用法是使用AJAX加载JSON数

一.AJAX技术介绍

AJAX是Asynchronous JavaScript And XML的首字母缩写,意为异步JavaScript与XML。
使用AJAX技术,可以在不刷新网页的情况下更新网页数据。使用AJAX技术的网页,一般会使用HTML编写网页的框架。
在打开网页的时候,首先加载的是这个框架。剩下的部分将会在框架加载完成以后再通过JavaScript从后台加载。
AJAX 的一种常见用法是使用 AJAX 加载 JSON 数据,然后在浏览器端渲染。如果能直接抓取到 JSON 数据,会比 HTML 更容易解析。
AJAX 实际上也是通过 HTTP 传输数据的。

二.JSON介绍与应用

JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。网络之间使用HTTP方式传递数据的时候,绝大多数情况下传递的都是字符串。
因此,当需要把Python里面的数据发送给网页或者其他编程语言的时候,可以先将Python的数据转化为JSON格式的字符串,然后将字符串传递给其他语言,其他语言再将JSON格式的字符串转换为它自己的数据格式。
不仅是字典,Python中的列表或者包含字典的列表,也可以转换为JSON格式的字符串,
如果要把JSON格式的字符串转换为Python的字典或者列表,只需要使用一行代码即可:
如下图
这里得到的json_data就是一个字典,可以像使用普通字典一样来使用它。

#-*- cdoeing = utf-8 -*-
#@Time : 2020-12-11
#name : LBOcean
import json

json_data = { 
   
  'basic_info': { 
   'name': 'LBOcean',
           'age': 20,
           'sex': 'max',
           'merry': False}
  }
print("json_data的数据类型为:",type(json_data))
json_data_str= json.dumps(json_data,indent=4)#indent 缩进的意思
print(json_data_str,'son_data_str的数据类型为:',type(json_data_str))

json_data_dict = json.loads(json_data_str)
print(json_data_dict,'json_data_dict的数据类型为:',type(json_data_dict))

在这里插入图片描述

三.异步GET与POST请求

这里我们就用kingname的链接: http://exercise.kingname.info/exercise_ajax_1.html.做练习对象,由于这个网站不需要请求头,我就没有添加heads

先点开这个连接看一下,我们可以看到如下两段话
在这里插入图片描述
那我们是不是可以尝试着拿下这两段话.

import requests
url = 'http://exercise.kingname.info/exercise_ajax_1.html'
home = requests.get(url).content.decode()
print(home)

在这里插入图片描述

结果发现拿下来是这种样式,文本根本不在html里面.
现在许多网页都采用了这种叫做异步加载的数据模式.
我们就要来分析一下,如何获取到这里面的内容

在这里插入图片描述

这里我们可以看到这个请求使用GET方式,发送到http://exercise.kingname.info/ajax_1 backend,接下来我们试一试_

import requests
url = 'http://exercise.kingname.info/ajax_1_backend'
home = requests.get(url).content.decode()
print(home)

在这里插入图片描述

同样的道理,我们分析下面的一个post请求

在这里插入图片描述

这里我们可以看到,这是使用POST方式向http://exercise.kingname.info/ajax_1_postbackend 发送请求,并以JSON格式提交数据

在这里插入图片描述

这里可以看到是以JSON格式来提交数据的,所以我们也需要提交一份json数据,才能有反馈值

import requests
url = 'http://exercise.kingname.info/ajax_1_postbackend'
json_data = { 
   'name' : 'LBOcean' , 'age' : 20}
home = requests.post(url,json=json_data).content.decode()
print(home)

在这里插入图片描述

可以看到我们很顺利的拿到了,想要的数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34733.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注