01-表单交互
[toc]
第6章 表单交互
在前面几章中,我们下载的静态网页返回的是相同的内容。而在本章中,我们将与网页进行交互,根据用户输入返回对应的内容。本章将包含如下几个主题:
- 发送
POST请求提交表单; - 使用cookie和会话登录网站;
- 使用Selenium用于表单提交。
想要和表单进行交互,就需要拥有可以登录网站的用户账号。现在我们需要手工注册账号,其网址为 http://example.python-scraping.com/user/register 。本章目前还无法实现自动化注册表单,不过在下一章中我们将会介绍处理验证码图像的方法,从而实现自动化表单注册。
**表单方法** HTML定义了两种向服务器提交数据的方法,分别是 `GET` 和 `POST` 。使用 `GET` 方法时,会将类似 `?name1=value1&name2=value2` 的数据添加到URL中,这串数据被称为“查询字符串”。由于浏览器存在URL长度限制,因此这种方法只适用于少量数据的场景。另外,这种方法通常应当用于从服务器端获取数据,而不是修改数据,不过开发者有时会忽视这一规定。而在使用 `POST` 请求时,数据在请求体中发送,而不是在URL中。敏感数据只应使用 `POST` 请求进行发送,以避免将数据暴露在URL中。 `POST` 数据在请求体中如何表示需要依赖于所使用的编码类型。服务器端还支持其他HTTP方法,比如 `PUT` 和 `DELETE` 方法,不过这些方法在标准HTML表单中均不支持。
**表单方法**
HTML定义了两种向服务器提交数据的方法,分别是 `GET` 和 `POST` 。使用 `GET` 方法时,会将类似 `?name1=value1&name2=value2` 的数据添加到URL中,这串数据被称为“查询字符串”。由于浏览器存在URL长度限制,因此这种方法只适用于少量数据的场景。另外,这种方法通常应当用于从服务器端获取数据,而不是修改数据,不过开发者有时会忽视这一规定。而在使用 `POST` 请求时,数据在请求体中发送,而不是在URL中。敏感数据只应使用 `POST` 请求进行发送,以避免将数据暴露在URL中。 `POST` 数据在请求体中如何表示需要依赖于所使用的编码类型。服务器端还支持其他HTTP方法,比如 `PUT` 和 `DELETE` 方法,不过这些方法在标准HTML表单中均不支持。