Advertisement

Scrapy 基础知识笔记(二)

阅读量:

6. Ajax和JSON

Ajax(Asynchronous JavaScript And XML,异步JavaScript和XML)是一种用于生成快速响应式网页的技术。该技术能够在不重绘整个页面的情况下更新页面的不同部分

AJAX工作原理

大多数使用Ajax的技术中服务器返回的标准数据格式是JSON形式(JSON is a widely used data format in AJAX applications)。这是一种用于存储和交换文本信息的标记语言(JavaScript Object Notation, JSON),它类似于XML(Extensible Markup Language),但在结构上更为简洁、高效且易于解析(compared to XML, JSON offers greater simplicity, speed, and ease of parsing)。与XML相比具有更为简洁、高效且易于解析的优势(In comparison to XML, JSON provides a more concise, efficient, and user-friendly structure for data exchange)。该方法能够将JavaScript对象中的数据集合转换为可传输的字符串形式(The method converts a collection of JavaScript objects into a string that can be easily transmitted over the network)。该字符串可以在不同系统之间无缝传输,并且在接收端可以被解码成相应的数组或对象结构(Once transmitted, this string can be decoded into the appropriate array or object structures in various systems)。当转换完成后的标准JSON字符串通常会被解析为相应的数组或对象结构(After conversion, the standard JSON string is typically parsed into an array or object structure)

例如:

复制代码
 {

    
 person:[{"name":"linda"},{"from":"Shanghai"}]
    
 }
    
  
    
 此时
    
 data.person[0].name ----> linda
    
 data.person.length = 2

7. GET和POST方法

(1)GET方法:浏览器将HTTP的header和data字段结合在一起形成一个TCP数据包发送给服务器;服务器对GET请求做出状态码200(表示成功)并返回相应的内容。GET方法传输的数据量通常在2KB以内,并且相较于POST方法而言更为安全稳定。

复制代码
 // GET方法用URL呈现,用 ? 分割URL地址和传输数据,数据用键值对呈现

    
 https://s.weibo.com/weibo?q=python

(2)POST方法:POST请求通常会生成两个相关的TCP报文。当服务器接收到HTTP报文后,在100(Continue)状态码响应的基础上发送数据包,并最终返回一个200(OK)的状态码及相应的数据内容。例如,在表单提交场景下将数据放入请求体中会导致较大的传输规模(大小取决于服务器处理能力)。

复制代码
 POST /Post.html HTTP/1.1               //采用POST方法,Post.html是用于提交HTTP请求的URL

    
 HOST:192.168.1.100:8000
    
 Content-Length:45
    
 Username=xxx & Password=123456&subLogin=submit

8. Cookies 和 Session 为了克服HTTP无状态的问题而采用Cookies技术。Cookie信息被存储在客户端设备中

核心依据是保证客户端与服务器间有效状态管理的解决办法。其中的数据持久化机制通常位于服务器端。

HTTP其本质是无状态的特性,在此架构下服务器不会存储交易过程中的相关信息,在每次请求中都会独立处理数据。

Cookies被称为网站用于识别用户并追踪Session的技术手段,在这种情况下其数据会被保存于用户的本地终端设备上(加密)。初次访问时服务器会将用户的相关信息暂时存储于硬盘或本地内存中,在随后的访问中则会从用户的本地内存或硬盘中读取相关信息。Cookie文件的具体内容经过加密处理仅Web服务器的CGI处理程序才能对其真正含义进行解析。

Cookies的工作场景:

①用来记录访客的一些信息

②在Web服务器之间传递变量

③可将Css,图片存在Cookies的临时文件夹中,再次访问时可提高效率

Cookies的操作:

①创建Cookies。Cookies是HTTP头部的组成部分,最先发送

②获取Cookies。若要管理这些Cookies,请首先创建一个用于管理Cookie的对象,并接着建立一个属于HTTPCookieProcessor且支持该对象的 opener。

复制代码
 #生成一个管理Cookie的对象

    
 cookie_obj = CookieJar()
    
 #创建一个支持Cookie的对象,对象属于HTTPCookieProcessor
    
 cookie_handler = HTTPCookieProcessor(cookie_obj)
    
 #创建一个opener
    
 opener = build_opener(cookie_handler)

清除 Cookie。如果未设置该 Cookie 的有效期,则当 Web 浏览器完全关闭时该 Cookie 将被清除。

Cookies的生命周期

①内存cookie:生命周期是再浏览器关闭之前

②硬盘cookie:设置了失效时间,保存到客户端硬盘中,直到过了有效时间

Cookie具有不可跨域性

-------------------------------------------------------------

Session

Session的概念与运作: session机制是一种用于记录客户状态的方式, 它涉及浏览器与 server之间的交互过程。为了维护 session的有效性, 在客户端及 server端都需要执行数据存储操作: 客户端存储一个唯一标识符(session_id), 而 server则存储该标识符与其相关联的数据(key-value)。每当用户发起 HTTP 请求时, 会创建一个随机且独一无二的 session_id 并将其发送至 server处理, server将此 id暂存于内存以便后续操作, 并通过该 session_id 可检索与之相关的具体信息(即 value)。当页面关闭后, session_id 自动失效; 当重新登录时系统将自动生成新的 session_id 进行重复操作

通过Python中的request库的Session类()方法可以执行网络请求。其中Session对象的主要功能是自动保存和管理Cookie值信息。例如,在模拟用户登录的情况下,该机制能够有效管理用户的访问权限和 session 状态。此外,在某些情况下(如模拟登录状态),Session对象还能够帮助实现类似的身份验证功能,并且在特定条件下(如未完成身份验证时),系统会阻止部分操作无法正常运行。

在服务器上运行时, Session对象会在执行JSP或Servlet等动态服务时被初始化. 仅当访问HTML和IMAGE等静态资源时不为这些资源创建Session对象. 服务器端会在一段时间内清除长时间未使用的会话对象.

全部评论 (0)

还没有任何评论哟~