【问题标题】:Programmatically enter a pin number and press button以编程方式输入密码并按下按钮
【发布时间】:2018-08-21 21:36:22
【问题描述】:

我正在做一个项目,在该项目中我继承了一些代码,这些代码使用 python 的“请求”库登录网站并从网站上抓取内容。 “登录”代码利用后端 URL 将凭据发布到端点。 (工作正常)

该站点的另一部分没有后端 URL。它只有一个表格,需要输入密码才能访问数据。下面是div代码

<input class="form-control" type="password" placeholder="Enter your
PIN number" id="pin" style="width:200px; float:left; display:inline;"
onkeypress="testPinEntry(event);">

<a id="pin_verify" style="float:left; clear:none; height:34px;" class="btn- 
glow primary login" href="#" onclick="verify_pin();">Verify PIN</a>

有人知道使用请求库输入数据并按下按钮的好方法吗?我的倾向是使用 xpath 并从那里开始(我非常熟悉编写 scapers - https://github.com/1jkunz1/MLB-Sabermetrics-Scraper/blob/master/src/scraper.py

我真的不想在这项任务中使用 selenium,因为我不希望项目依赖它,但我能找到的大多数解决方案似乎更喜欢 selenium。

【问题讨论】:

  • requests 发出请求。它不运行 Javascript。

标签: javascript python html python-requests scraper


【解决方案1】:

如果您使用的是任何现代浏览器,则可以按“F12”打开开发者工具。从那里您可以转到“网络”选项卡以查看您的浏览提出的所有请求。

打开该选项卡后,发送一个请求(您拥有的一个 pin),一个新的 POST 请求应该会显示在网络控制台中。单击它,然后在左侧打开的选项卡上搜索“See request body”(或 Firefox 上的“edit and resend -> body”)(或类似名称,具体取决于您的浏览器),您将能够看到它以键:值对的形式发送到服务器的所有数据。

您可以使用 Python 请求发送带有所需数据的 POST 请求(data={key:value, ...})。请记住,某些字段可能需要根据每个请求进行更改。有些网站没有唯一的有效标记,它们通常位于标签的标题中或作为隐藏字段在表单本身中。

编辑。不是请求头,你要的是请求体,对不起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多