一个请求的组成、静态页面和动态页面、HTML, CSS和JS、浏览器渲染的过程
一个请求的组成
def request_jd(keyword):
url = "https://search.jd.com/Search"
params = {
"keyword": keyword
}
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
}
response = requests.get(url=url, params=params, headers=headers)
response.text 获取str类型的响应内容
response.content 获取bytes类型的响应内容
response.json() 获取json格式数据
请求行(request line)
- URL
- 请求方法(method)
请求头(headers)
- user-agent 用来指示当前请求时从哪个终端发起的
- cookie 用来指示当前的用户信息和行为信息
请求体(body)
params
(严格来说不算是请求体)
实际请求的时候会变成URL的一部分, 所以说post请求也可以用params
urlencode和urldecode
请求头中指定的编码格式只对请求体是有效的, 不对params有效. 所以urlencode来保证URL不会发生编码问题.
from urllib.parse import quote, unquote
print(quote("鼠标"))
print(unquote("%E9%BC%A0%E6%A0%87"))
data
携带额外的请求信息.
静态页面和动态页面
静态页面
纯粹的HTML文件, 简单地说当前的页面文件就存储在服务端, 我们请求的静态页面实际上就是请求对方服务器中的文件. 通过返回不同的HTML文件来完成不同请求的显示效果.
- 动态页面和静态页面的区分绝不是指页面上的动画效果
最常见的就是各大企业网站
动态页面
动态页面是指除了HTML以外, 通过ajax
在不直接刷新页面的前提下, 完成了和服务端的数据交互. 并通过javascript
回调函数完成对页面内容的修改, ajax
和服务端交互的数据格式通常为json
浏览商品 视频网站的瀑布流
Ajax
asynchronous JavaScript-XML 异步javascript和xml的缩写
在不直接刷新页面的前提下, 完成了和服务端的数据交互. 并通过javascript
回调函数完成对页面内容的修改, ajax
和服务端交互的数据格式通常为json
.
json
js对象标记法, 用来表示对象关系
js中的对象: {a: 1, b: null}
- json的作用 是一种跨平台跨语言的传输对象格式, 可以保留一些基础的数据类型信息. 原来json只是作为前端和服务端传输数据的格式规范, 但是现在几乎所有热门语言都内置了json, 所以可以称之为跨语言的传输格式
import json
test_dict = {
"a": 1,
"b": ["1", 2, None],
"c": {"d": 1}
}
# json格式数据其实是个字符串
# 将python字典转变为json数据格式
json_data = json.dumps(test_dict)
print(type(json_data), json_data)
# 将json数据格式转变为字典
print(json.loads(json_data))
HTML, CSS和JS
html和js决定了显示的内容, css决定了怎么显示.
HTML(HyperTextMarkup Language 超文本标记语言)
HTML的作用
定义网页的内容的含义和结构.
tag(标签)
<标签名>
<html>
表示当前是一个HTML文档对象
<head>
提供一些基础信息
# 通过meta标签来表示当前页面的编码格式
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<body>
纯内容
element(元素)
<标签名> xxxxxxxxxx</标签名>
CSS(Cascading Style Sheets 层叠样式表)
能对网页中的元素位置的排版进行像素级别的控制. 页面的渲染主要就是通过css
来完成的.
JavaScript
通过<script></script>
包裹, 主要完成数据的交互和对DOM树(HTML是一个结构化的数据文件, DOM就是将结构化的数据转变成对象)的修改.
浏览器渲染的过程
- 接收到HTML文件后开始构建DOM(Doucment Object Model)树.
- CSS来计算DOM树各个节点的坐标, 大小等CSS属性, 开始布局.
- 开始加载媒体资源和页面渲染.
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- js原生、jquery单选框radio总结(获取值、设置默认选中值、样式)
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- 一些 HTML 与 JS 的小技巧
- js手写题汇总(面试前必刷)
- JS获取当前年份_js获取当前时间年月日
- 【青训营】关于JS设计模式(一)
- JavaScript、js文件、Node.js、静态文件
- vue.js客服系统实时聊天项目开发(二十一)vue项目中引入静态资源
- 原生 JS 实现 HTML 转 Markdown,以及其实现逻辑(html2md.js 或 html2markdown.js)
- JS黑科技:水印防删
- clipboard.js:最轻便的复制页面内容到剪切板的JS
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- Linux上的JS压缩工具(js压缩工具linux)
- 快速掌握JS操作MySQL数据库技巧(js操作mysql数据库)
- express使用Node.js、MongoDB和Express快速构建Web应用(nodemongodb)
- 使用JS实现Redis数据读取(js读取redis)
- JS技术连接Oracle数据库实现数据交互(js连接oracle实例)
- JS将文件传输至MySQL数据库(.js传文件至mysql)
- 关于文本限制字数的js代码
- 广告代码静态化js通用函数
- js隔行变色、鼠标划过变色代码
- JS实现可改变列宽的table实例
- JS自定义功能函数实现动态添加网址参数修改网址参数值
- 用Js实现的动态增加表格示例自己写的
- js获取当前月的第一天和最后一天的小例子
- js中判断用户输入的值是否为空的简单实例
- js使用递归解析xml
- js面向对象之静态方法和静态属性实例分析