【问题标题】:Programmatic Form Submit程序化表单提交
【发布时间】:2008-12-26 12:54:27
【问题描述】:
我想抓取网页的内容。内容是在该网站上的表格填写并提交后生成的。
我已阅读有关如何抓取最终结果内容/网页的信息 - 但如何以编程方式提交表单?
我正在使用 python 并且已阅读我可能需要获取带有表单的原始网页,对其进行解析,获取表单参数,然后执行 X?
谁能指出正确的方向?
【问题讨论】:
标签:
python
forms
screen-scraping
submit
【解决方案2】:
您需要生成一个包含表单数据的 HTTP 请求。
表单将如下所示:
<form action="submit.php" method="POST"> ... </form>
这告诉你请求的 url 是 www.example.com/submit.php 并且你的请求应该是一个 POST。
在表单中会有几个输入项,例如:
<input type="text" name="itemnumber"> ... </input>
您需要创建一个包含所有这些输入名称=值对的字符串,该字符串为附加到您请求的 URL 末尾的 URL 编码,现在变为
www.example.com/submit.php?itemnumber=5234&otherinput=othervalue 等...
这对 GET 很有效。 POST 有点棘手。
</motivation>
只需点击 S.Lott 的链接,即可获得更易于使用的库支持:P
【解决方案3】:
从一个类似的问题 - options-for-html-scraping - 你可以了解到在 Python 中你可以使用 Beautiful Soup。
Beautiful Soup 是一个 Python HTML/XML 解析器,专为屏幕抓取等快速周转项目而设计。三个功能使它变得强大:
- Beautiful Soup 不会因为你的错误标记而窒息。它会生成一个解析树,其意义与您的原始文档大致相同。这通常足以收集您需要的数据并逃跑。
- Beautiful Soup 提供了一些用于导航、搜索和修改解析树的简单方法和 Pythonic 习惯用法:用于剖析文档和提取所需内容的工具包。您不必为每个应用程序创建自定义解析器。
- Beautiful Soup 自动将传入文档转换为 Unicode,将传出文档自动转换为 UTF-8。您不必考虑编码,除非文档未指定编码并且 Beautiful Soup 无法自动检测编码。然后你只需要指定原始编码。
不寻常的名字caught the attention of our host,2008 年 11 月 12 日。
【解决方案4】:
您可以使用 javascript 来实现。如果表格是这样的:
<form name='myform' ...
然后你可以在javascript中做到这一点:
<script language="JavaScript">
function submitform()
{
document.myform.submit();
}
</script>
您可以使用链接或按钮的“onClick”属性来调用此代码。要在加载页面时自动调用它,请使用元素的“onLoad”属性:
<body onLoad="submitform()" ...>