程序化表格提交

时间:2008-12-26 12:54:27

标签: python forms screen-scraping submit

我想抓一个网页的内容。在填写并提交该网站上的表格后生成内容。

我已经阅读了如何抓取最终结果内容/网页 - 但如何以编程方式提交表单?

我正在使用python并且读过我可能需要获取带有表单的原始网页,解析它,获取表单参数然后执行X?

有人能指出我的方向吗?

4 个答案:

答案 0 :(得分:2)

您需要生成包含表单数据的HTTP请求。

表单看起来像:

<form action="submit.php" method="POST"> ... </form>

这告诉您要求的网址是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

答案 1 :(得分:2)

使用python,我认为它需要执行以下步骤:

  1. 解析包含表单的网页,找出表单提交地址和提交方法(“发布”或“获取”)。
  2. this explains form elements in html file

    1. 使用urllib2提交表单。你可能需要一些函数,比如来自urllib的“urlencode”,“quote”来生成post方法的url和数据。有关详细信息,请阅读库文档。

答案 2 :(得分:2)

从类似问题 - options-for-html-scraping - 您可以了解到使用Python,您可以使用Beautiful Soup

  

Beautiful Soup是一个Python HTML / XML解析器,专为快速周转项目而设计,例如屏幕抓取。三个功能使它变得强大:

     
      
  1. 如果给你不好的标记,美丽的汤不会窒息。它产生一个解析树,使其与原始文档几乎一样有意义。这通常足以收集您需要的数据并逃跑。
  2.   
  3. Beautiful Soup提供了一些简单的方法和Pythonic习语,用于导航,搜索和修改解析树:用于剖析文档和提取所需内容的工具包。您不必为每个应用程序创建自定义解析器。
  4.   
  5. Beautiful Soup会自动将传入的文档转换为Unicode,将传出的文档转换为UTF-8。您不必考虑编码,除非文档没有指定编码并且Beautiful Soup不能自动检测编码。然后你只需要指定原始编码。
  6.   

不寻常的名字caught the attention of our host,2008年11月12日。

答案 3 :(得分:-1)

你可以用javascript做到这一点。如果表格如下:

<form name='myform' ...

然后你可以在javascript中执行此操作:

<script language="JavaScript">
function submitform()
{
document.myform.submit();
}
</script> 

您可以使用链接或按钮的“onClick”属性来调用此代码。要在加载页面时自动调用它,请使用元素的“onLoad”属性:

<body onLoad="submitform()" ...>