第6章 表单交互

在前面几章中,我们下载的静态网页返回的是相同的内容。而在本章中,我们将与网页进行交互,根据用户输入返回对应的内容。本章将包含如下几个主题:

  • 发送POST请求提交表单;
  • 使用cookie和会话登录网站;
  • 使用Selenium用于表单提交。

想要和表单进行交互,就需要拥有可以登录网站的用户账号。现在我们需要手工注册账号,其网址为http://example.python-scraping.com/user/register。本章目前还无法实现自动化注册表单,不过在下一章中我们将会介绍处理验证码图像的方法,从而实现自动化表单注册。

栏目1.jpg 表单方法

HTML定义了两种向服务器提交数据的方法,分别是GETPOST。使用GET方法时,会将类似?name1=value1&name2=value2的数据添加到URL中,这串数据被称为“查询字符串”。由于浏览器存在URL长度限制,因此这种方法只适用于少量数据的场景。另外,这种方法通常应当用于从服务器端获取数据,而不是修改数据,不过开发者有时会忽视这一规定。而在使用POST请求时,数据在请求体中发送,而不是在URL中。敏感数据只应使用POST请求进行发送,以避免将数据暴露在URL中。POST数据在请求体中如何表示需要依赖于所使用的编码类型。服务器端还支持其他HTTP方法,比如PUTDELETE方法,不过这些方法在标准HTML表单中均不支持。

我们最先要实施自动化提交的是登录表单,其网址为http://example. ...

Get 用Python写网络爬虫(第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.