动态抓取和解析

时间:2012-01-13 15:29:47

标签: ruby regex perl vim scripting

重新提出原始问题:

我知道大量的PHP,Js,CSS,OOP并且最近通过使用vim编辑器的netrw和elinks插件来下载一系列已经解析并准备好的网页(大约一百万行),从而磨练了我的正则表达技能上传到我的网站。我在linux / ubuntu系统上工作,一个localhost设置,这个特殊项目正在实现Concrete5 cms - 用PHP编写。

看到抓取和解析信息的好处,我想让我的网站动态执行此功能,但规模要小得多;例如,使我的新用户能够将他们的个人信息从另一个网站传输到我的网站 - 这通常是安全连接(尽管不总是)和密码。

问题:为此使用的最佳工具(脚本语言)是什么?我不知道Perl或Ruby,但我相信其中任何一个都是不错的选择。我也听过AWK和SED。一旦我开始学习这门语言,我相信我可以理解如何做到这一点。我真的很感激一些经验丰富的意见,他们最好开始花时间学习它。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我强烈建议RubyCapybara进行网页抓取。 (参见水豚页面底部的非测试相关示例)。原因:

  • 简单,简短的抓取语法,cookie支持,js支持。

  • Ruby有许多其他用途,友好的语法和活跃的就业市场。

  • Capybara拥有多个支持的驱动程序。你可以运行一个真正的浏览器(可见),一个真正的浏览器无头(无形),以便javascript网站工作。使用相同的代码,您可以切换驱动程序以运行http请求而不使用js(机械化)来提高速度。这有助于您克服许多障碍(比如需要运行JS / Ajax),需要通过更改单行代码(Capybara.current_driver =:some_driver)来查看交互等。

驱动程序:Capybara-WebkitCapybara-Mechanize

  • 能够使用CS或Xpath选择器,无论您喜欢什么。

  • 积极发展,以及围绕基础技术快速发展的生态系统。

答案 1 :(得分:2)

Perl有两个非常好用的抓取工具,我知道:Web::ScraperScrappy。两者都能够使用CSS3和XPath选择器来识别元素; Scrappy构建于Web :: Scraper之上,并添加了集成的抓取和爬行功能,并提供了一个很好的URL匹配系统来选择要跟踪的链接以收集更多信息(当Web :: Scraper使用单个文档时)。它使用完善且强大的WWW::Mechanize库在页面之间移动,该库智能,可靠,并且可识别身份验证和cookie。

如果您想自己进入较低级别,可以使用很多好的工具,包括前面提到的WWW :: Mechanize,HTML::TreeBuilderHTML::TreeBuilder::XPathHTML::TableExtractor等等。