自动填写Web查询表单并返回数据(对于新手)

时间:2012-09-14 12:55:27

标签: data-extraction

我是编程中'新手'之前的任何东西。我在VBA for Excel中编写了宏,并在我年轻的时候使用了Visual Studio,但就是这样。

我的问题:要生成工作中需要的报告,我必须提取存储在公司内部网上的用户友好查询表单后面的数据。除此之外,我已将报告的其他部分自动化。我想编写一个程序来访问这个网页,并为我填写预设值的查询表单,然后返回输出的数据。我与我的一位计算机科学家朋友进行了讨论,他说这对Haskell(他选择的语言)来说很容易。但是我不是老手,所以我想学习一种比我的水平更接近的语言...... Python似乎是一个不错的选择。

我的问题:是否可以使用Python进行此类数据提取?它会有多困难,有什么好的资源可以自学呢?

我做了一些研究并提出了Scrapy,但我不知道它是否填写了表格。此外,如果还有其他语言更适合这种情况,我很高兴听到它。

3 个答案:

答案 0 :(得分:1)

我首先阅读一些关于HTTP的基础教程。表单基本上只是一种收集数据的可视方式。表单的内容是浏览器对表单数据的请求。

所以“填写表格”实际上并不是必要的(但可能是因为它可能会变得复杂)。有必要了解表单实际对浏览器做出的请求并模拟它。一个非常简单的方法是使用chrome开发人员工具或名为firebug的firefox扩展。其中每个都为您提供了查看所有网络流量的方法,包括表单。

例如,如果您有一个表单,您必须提交数据和报告类型,实际的Web请求可能看起来像

?date=2012-09-12&type=overview

所以基本上你只需要找到一种方法来使用该数据向URL发出http请求。这是一项微不足道的任务,几乎所有语言都有办法实现这一目标。

使用python可以做到这一点。那里有很多教程。 Python在标准库中内置了可以提供帮助的url库 http://docs.python.org/library/urllib.html

每次我使用urllib2时,我通常会以http://www.voidspace.org.uk/python/articles/urllib2.shtml

结束

答案 1 :(得分:1)

最简单的方法就是使用urllib2。通常,表单的参数会传输到服务器,以便您可以在URL中将其视为?foo=bar&bla=blah。您可以使用urllib2.urlencode:

为表单生成参数

Python and urllib2: how to make a GET request with parameters

对于一个新手,你非常清楚地表达你的想法,恭喜。

答案 2 :(得分:0)

结合loginformscrapy,您可以自动填写表单和抓取网页。 这是一个关于它的教程。 http://blog.scrapinghub.com/2012/10/26/filling-login-forms-automatically/