"点击"请求按钮

时间:2016-05-11 13:48:49

标签: python web-scraping python-requests bots

我有这个小网站,我想用请求库填写表格。问题是,当填写表单数据并按下按钮时,我无法访问下一个站点(Enter不起作用)。

重要的是我无法通过点击某种机器人来做到这一点。这需要完成,所以我可以在没有图形的情况下运行。

info = {'name':'JohnJohn',
        'message':'XXX',
        'sign':"XXX",
        'step':'1'}

前三个条目名称,消息,符号是文本区域,步骤是我认为按钮。

r = requests.get(url)
r = requests.post(url, data=info)

print(r.text)

当我手动通过chrome发送请求时,表单数据如下所示:

  • 名:JohnJohn
  • 消息:XXX
  • 征:XXX
  • 步骤:1

按钮元素如下所示:



<td colspan="2" style="text-align: center;">
    <input name="step" type="hidden" value="1">
    <button id="button" type="button" onclick="myClick();"
     style="background-color: #ef4023;  width: 80px; font-face: times; font-size: 14pt;">
        Wyślij
    </button>
</td>
&#13;
&#13;
&#13;

如果我手动执行此操作,则下一个网站具有相同的地址。

2 个答案:

答案 0 :(得分:9)

正如您在剪辑后看到的那样,单击按钮会触发一些JavaScript代码,即名为myClick()的方法。

使用pythons请求库点击这个东西并不简单。您可能有更多的运气试图找出myClick()内发生的事情。我的猜测是,在某些时候,将向HTTP端点发出POST请求。如果您能解决这个问题,可以将其转换为您的python代码。

如果这不起作用,另一种选择是使用像Selenium / PhantomJS这样的东西,这使你能够拥有一个真实的,无头的和可编写脚本的浏览器。使用这样的工具,您实际上可以填写表单和单击按钮。你可以看看这个so answer,因为它向你展示了如何从python中使用Selenium + PhantomJS。

请确保不要通过垃圾论坛或[在此处插入非法或其他滥用行为]滥用此类方法。

答案 1 :(得分:0)

在这种情况下,当您需要伪造脚本按钮的请求时,可能不容易猜测JS的逻辑,而是进行物理点击并查看chrome devtools的网络嗅探器,这很容易,这会向您发出简单的请求,反过来,可以轻松地在Python中伪造