什么是最好的屏幕拼写语言?

时间:2009-04-17 12:02:06

标签: programming-languages screen-scraping web-scraping

您好我想创建一个桌面应用程序(c#prob),用于在第三方网页上搜索或操作表单。基本上我在桌面应用程序的表单中输入我的数据,它转到第三方网站,并使用脚本或后台的任何内容,在那里输入我的数据(包括我的登录)并点击我的提交按钮。我只是想避免加载浏览器!

在这方面没有做太多(任何!)工作我想知道像perl,python,ruby等脚本语言是否允许我这样做?或者只是使用c#和.net完成所有的抓取工作?哪一个是最好的IYO?

我在想脚本可能需要从不同平台上的应用程序挂钩到相同的脚本(例如,我无法在c#中开发它的symbian mobile,就像桌面版本一样)。

它不是一个网络应用程序,否则我也可以使用原始网站。我意识到这一切听起来毫无意义,但这种特定形式的自动化对我来说是一个真正的节省时间。

13 个答案:

答案 0 :(得分:26)

不要忘记查看BeautifulSoup,强烈推荐。

例如,请参阅options-for-html-scraping。 如果您需要为此任务选择编程语言,我会说Python

更直接的问题解决方案,请参阅twill,这是一种用于网页浏览的简单脚本语言。

答案 1 :(得分:6)

我使用C#进行抓取。请参阅有用的HtmlAgilityPack包。 对于解析页面,我要么使用XPATH,要么使用正则表达式。如果您需要,.NET也可以轻松处理cookie。

我写了一个小类,它包含创建WebRequest,发送,等待响应,保存cookie,处理网络错误和重新传输等所有细节 - 最终结果是在大多数情况下我可以调用“GetRequest \ PostRequest”并获取HtmlDocument。

答案 2 :(得分:4)

C#非常适合您的屏幕抓取需求。 .NET的Regex功能非常好用。但是,通过这么简单的任务,您很难找到一种不能相对容易地完成您想要的语言。考虑到你已经用C#进行编程,我会坚持认为。

内置屏幕抓取功能也是一流的。

答案 3 :(得分:4)

您可以尝试使用.NET HTML Agility Pack:

http://www.codeplex.com/htmlagilitypack

  

“这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH,也不需要XSLT来使用它,不用担心......)。一个.NET代码库,允许你解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型非常类似于提出System.Xml,但对于HTML文档(或溪流)。“

答案 4 :(得分:3)

我们将Groovy与NekoHTML一起使用。 (另请注意,您现在可以在Google App Engine上运行Groovy。)

以下是Keplar博客上的一些示例可运行代码:

Better competitive intelligence through scraping with Groovy

答案 5 :(得分:2)

IMO Perl内置的正则表达式功能和操作文本的能力将使其成为屏幕抓取的一个很好的竞争者。

答案 6 :(得分:2)

Ruby非常棒!... 试试它的hpricot / mechanize

答案 7 :(得分:2)

Groovy非常好。

实施例: http://froth-and-java.blogspot.com/2007/06/html-screen-scraping-with-groovy.html

Groovy和HtmlUnit也是一个非常好的匹配: http://groovy.codehaus.org/Testing+Web+Applications Htmlunit将使用Javascript支持模拟完整的浏览器。

答案 8 :(得分:1)

由于其良好的Perl-Compatible Regex supportcURL library.

,PHP是一个很好的竞争者

答案 9 :(得分:1)

HTML Agility Pack (c#)

  1. XPath是borked,清除html的方式使其符合xml标准,它会丢弃标签,你必须调整表达式才能使它工作。
  2. 简单易用
  3. Mozilla Parser (Java)

    1. Solid XPath支持
    2. 你必须先设置环境变量然后才能工作,这很痛苦
    3. 在org.dom4j.Node和org.w3c.dom.Node之间进行投射以获得不同的属性是一种真正的痛苦
    4. 死于非标准HTML (0.3修复此问题)
    5. XPath的最佳解决方案
    6. 访问NodeList中节点上的数据的问题

      使用for(int i = 1; i< = list_size; i ++)来解决这个问题

    7. Beautiful Soup (Python)

      我没有太多经验,但这是我发现的

      1. 没有XPath支持
      2. 路径html的漂亮界面

      3. 我更喜欢Mozilla HTML Parser

答案 10 :(得分:1)

看看HP的网络语言(以前称为WEBL)。

http://en.wikipedia.org/wiki/Web_Language

答案 11 :(得分:0)

或者坚持使用C#中的WebClient和一些字符串操作。

答案 12 :(得分:0)

我推荐python(或Beautiful Soup)。我目前正处于使用python的小型屏幕抓取项目中,而python 3自动处理诸如cookie认证(通过CookieJar和urllib)之类的东西大大简化了事情。 Python支持您可能需要的所有更高级的功能(如正则表达式),以及能够快速处理这样的项目的好处(在处理低级别的东西时没有太多开销)。它也是相对跨平台的。