使用 Python "requests" 模块登录和单击按钮
Login and Clicking Buttons with Python "requests" Module
作为学习 HTTP requests/responses[=31= 的一部分,我在 Python 上玩 requests 模块 有一段时间了];而且我认为我掌握了该主题中应该理解的大部分基本知识。用一个天真的类比,它基本上是按照 ping-pong 原则工作的。您将数据包中的请求发送到服务器,然后服务器将另一个数据包发回给您。例如,登录站点只是简单地向服务器发送 post 请求,我设法做到了。但是,我遇到的问题是无法通过 HTTP post 请求 单击按钮。我在这里和那里搜索它,但除了利用 selenium 模块 之外,我找不到对我的查询的有效答案,如果有另一种方法 [= =20=]也请求模块。我也知道他们为某事创建了一个名为 selenium 的模块。
问题:
1) 我必须考虑哪些参数才能点击我通过 HTTP 请求访问的帐户中的按钮或链接?例如,当我使用浏览器的 built-in 检查工具查看请求 header 和响应 header 的网络 activity 时,服务器发回了很多参数,例如sec-fetch-dest、sec-fetch-mode 等
2) 是不是对初学者来说太复杂了,还是幕后有太多高级的东西做不到所以 selenium 是出于这个原因创建的?
从理论上讲,您可以编写一个程序来处理请求,但您会重复许多已经在其他工具和 API 中构建和优化的功能。一般过程是:
- 使用 get 请求加载通常在浏览器中呈现的 HTML。
- 处理 HTML 以找到有问题的按钮。
那么,如果是简单的形式:
- 确定按钮将执行的请求方法(例如,使用
formmethod
参数,参见 here)。
- 使用请求数据包中的所需信息执行指定请求。
如果是复杂页面(即使用 JavaScript):
- 找到按钮的唯一标识符。
- 处理 JavaScript 代码以确定单击按钮时执行的操作。
- 如果可能,使用请求执行 JavaScript 操作(例如,在 link 或类似的东西之后)。我说如果可能的话,因为 JavaScript 可以做很多事情,据我所知,简单的 HTTP 请求做不到,比如改变呈现的 CSS 以便在按钮时改变
<div>
的背景颜色被点击。
你最好使用像 selenium or beautiful soup 这样的工具,因为他们已经创建了 APIs 来为你做很多上述事情。如果您已经使用内置的请求库来了解基本的 HTTP 请求类型及其工作原理,那就太棒了——现在继续学习大量优秀的工具,这些工具将请求包装成更实用、更健壮的 API.
作为学习 HTTP requests/responses[=31= 的一部分,我在 Python 上玩 requests 模块 有一段时间了];而且我认为我掌握了该主题中应该理解的大部分基本知识。用一个天真的类比,它基本上是按照 ping-pong 原则工作的。您将数据包中的请求发送到服务器,然后服务器将另一个数据包发回给您。例如,登录站点只是简单地向服务器发送 post 请求,我设法做到了。但是,我遇到的问题是无法通过 HTTP post 请求 单击按钮。我在这里和那里搜索它,但除了利用 selenium 模块 之外,我找不到对我的查询的有效答案,如果有另一种方法 [= =20=]也请求模块。我也知道他们为某事创建了一个名为 selenium 的模块。
问题:
1) 我必须考虑哪些参数才能点击我通过 HTTP 请求访问的帐户中的按钮或链接?例如,当我使用浏览器的 built-in 检查工具查看请求 header 和响应 header 的网络 activity 时,服务器发回了很多参数,例如sec-fetch-dest、sec-fetch-mode 等
2) 是不是对初学者来说太复杂了,还是幕后有太多高级的东西做不到所以 selenium 是出于这个原因创建的?
从理论上讲,您可以编写一个程序来处理请求,但您会重复许多已经在其他工具和 API 中构建和优化的功能。一般过程是:
- 使用 get 请求加载通常在浏览器中呈现的 HTML。
- 处理 HTML 以找到有问题的按钮。
那么,如果是简单的形式:
- 确定按钮将执行的请求方法(例如,使用
formmethod
参数,参见 here)。 - 使用请求数据包中的所需信息执行指定请求。
如果是复杂页面(即使用 JavaScript):
- 找到按钮的唯一标识符。
- 处理 JavaScript 代码以确定单击按钮时执行的操作。
- 如果可能,使用请求执行 JavaScript 操作(例如,在 link 或类似的东西之后)。我说如果可能的话,因为 JavaScript 可以做很多事情,据我所知,简单的 HTTP 请求做不到,比如改变呈现的 CSS 以便在按钮时改变
<div>
的背景颜色被点击。
你最好使用像 selenium or beautiful soup 这样的工具,因为他们已经创建了 APIs 来为你做很多上述事情。如果您已经使用内置的请求库来了解基本的 HTTP 请求类型及其工作原理,那就太棒了——现在继续学习大量优秀的工具,这些工具将请求包装成更实用、更健壮的 API.