2010-12-15 116 views
0

我只是有几个关于这个话题的问题。刮屏|网页抓取

有人可以解释的优点和使用下列语言来编写刮刀的缺点:

的Java/Groovy的

的Perl

比索

的Python

我是也想知道在刮脸时可能会遇到什么样的问题,以及我应该如何处理它。例如,我遇到了片段身份,还没有找到处理它的方法。 (我正在使用htmlunit)

只是为那些对这个话题有所了解的人寻找一些指针。

回答

1

与编程语言本身相比,优点/缺点更多地与可用的框架相关。

  1. 如果需要报废的JavaScript/AJAX网站是的HtmlUnit的最佳选择之一,但如果你想直接用它,你需要在JVM(Java,Jython中,Clojure的,等等)语言运行。另一种选择(对于javascript/ajax)是编写Google Chrome插件(比Firefox更容易)或在应用程序中嵌入Web浏览器。第三种方法是使用自动化工具,如http://openqa.org/(例如:Selenium,W​​atir)。
  2. 如果您不需要javascript/ajax支持,我的经验lxml是CPython下最好的抓取库,主要是使用格式不正确的html。其他的html解析器在任何情况下都不能正常工作。
  3. 超越(1)和(2),另一个重要问题是如果你有一个并行爬行框架(如果你需要速度)。 (1),(2),(3)一起很难找到。
+0

谢谢你的详细解答。你已经清除了我在周围漂浮的几个问题。你有没有处理Selenium?我一直在考虑检查它,但还没有迈出这一步。我想在跳上之前我会做一些研究。 – StartingGroovy 2010-12-17 21:58:34

+0

不,我没有使用硒,我用过Watir。在这种情况下看看有关利弊的过去问题:http://stackoverflow.com/questions/606550/watir-vs-selenium-vs-sahi我只需要补充一点,Watir对我来说似乎很慢。 – 2010-12-22 19:08:25

+0

非常感谢您的意见,这非常有帮助 – StartingGroovy 2010-12-22 20:42:19

1

我推荐从Python + lxml开始。 Mechanize有时也有帮助。

依赖于JavaScript或Cookie的网站很难刮取,但大多数都很简单。

请确保在您的请求之间留出几秒钟以避免被阻止。

+0

谢谢,我没有考虑过仅仅为了刮目的考虑Python。我将不得不看看你的建议。也感谢关于在定时器上运行请求的提示。 – StartingGroovy 2010-12-17 21:54:11

1

考虑看TestPlan。它有它自己的高级语言,但你也可以用Java编写模块。它支持Selenium后端以及HTMLUnit。

如果你可以给你一个特定的问题(问题)与你的片段,那么我也可以回答。

+0

我想我会接受你的建议(因为我最熟悉Java/Groovy)。我也在考虑关注Selenium;我听说过很多关于它的事情。至于我的具体问题:http://stackoverflow.com/questions/4320179/htmlunit-getbyxpath-returns-null我针对该问题的评论答案。我还没有解决这个具体问题。我不知道如何处理与HTMLUnit – StartingGroovy 2010-12-17 21:55:56

+0

片段标识符只是想知道如果你有一个时刻来看看我的问题? – StartingGroovy 2010-12-20 21:54:11