2

我是编程中的“新手”之前的任何东西。我在 VBA 中为 Excel 编写了宏,并且在我年轻的时候也使用过 Visual Studio,但仅此而已。

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

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

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

4

3 回答 3

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

于 2012-09-14T13:02:23.543 回答
1

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

Python 和 urllib2:如何使用参数发出 GET 请求

作为一个新手,你的想法很清晰,恭喜。

于 2012-09-14T13:05:43.857 回答
0

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

于 2014-05-31T08:14:19.227 回答