首页 > 解决方案 > Mechanicalsoup 带有交互式页面(无需打开浏览器)

问题描述

我对带有表单的交互页面有问题,因为我必须从表单中选择一个元素,然后渲染当前页面并抓取它

表单是一个简单的单选按钮,它包含一个 onclick 动作并调用一个写入 DOM 元素的 js 函数

<input id="RBLOpcionBuscar_2" type="radio" name="RBLOpcionBuscar" value="Todas" onclick="javascript:setTimeout('__doPostBack(\'RBLOpcionBuscar$2\',\'\')', 0)" />

我找到了不同的选项来获取由 javascript 生成的元素:dryscrape、requests_html、python-qt4 和 selenium,但我不知道如何集成它们,我不想使用 Selenium,因为它会打开浏览器

尊重!

标签: javascriptpythonweb-scrapingmechanicalsoup

解决方案


您可能需要选择您的选项

browser["RBLOpcionBuscar"] = "Todas"

然后发送隐藏的输入

 # option of query calls
 browser.get_current_form().set("__EVENTTARGET", "GVConvocatorias", True)
 # call identifier
 browser.get_current_form().set("__EVENTARGUMENT", "Page$" + str(jump_page), True)

这是一个例子

https://github.com/danipilze/BECAS_ICETEX/blob/master/main.py


推荐阅读