【问题标题】:Automatically filling in web query forms and returning data (for a newbie)自动填写网络查询表单并返回数据(针对新手)
【发布时间】:2012-09-14 12:55:27
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: data-extraction


    【解决方案1】:

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

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

    对于一个新手,你的想法很清晰,恭喜。

    【讨论】:

      【解决方案2】:

      我会先阅读一些关于 HTTP 的基本教程。表单基本上只是一种收集数据的可视化方式。表单的核心是您的浏览器对该表单数据发出的请求。

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

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

      ?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 结束

      【讨论】:

      • 这是一座金矿;非常感谢您解释基础知识!我对 HTTP 知之甚少,但那些浏览器扩展听起来很棒。 urllib 也是如此。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-02
        • 2013-08-31
        • 1970-01-01
        • 2018-08-03
        相关资源
        最近更新 更多