动态刮解析

问题描述:

转述原题:动态刮解析

我知道一个良好的数额PHP,JS,CSS,OOP和使用vim编辑器的NETRW和elinks插件下载一系列的最近磨练我的正则表达式技巧网页(大约一百万行)被解析并准备上传到我的网站。我使用的是linux/ubuntu系统,本地主机设置,这个特定的项目正在实现Concrete5 cms - 这是用PHP编写的。

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

问题:什么是最好的工具(脚本语言)用于此?我不知道Perl或Ruby,但我相信其中任何一个都是不错的选择。我也听说AWK和SED。我确信一旦我开始学习这门语言,我就可以弄清楚如何去做。我真的很感谢一些经验丰富的投入,在哪些语言是最好的开始投入我的时间来学习它。

感谢您的帮助。

+1

描述太模糊,难以理解你想要达到什么目标,其系统是否涉及,数据从哪里到哪里。你忽略了解释Netra和netrw。 - 无需使用编辑器就可以自动进行网站搜索/解析,事实上,Perl和Ruby在这项任务中表现突出。 [堆栈溢出是为了特定问题](http://*.com/faq#questions),把你的问题分解成小块。 – daxim 2012-01-13 16:03:28

+0

为什么你用vim代替一些脚本语言?或者直接使用'elinks',然后用'sed'解析输出?虽然vim可能有可能,但有更好的工具来做这种事情。 – 2012-01-13 16:07:06

+0

你在标签中说“perl”。为什么不使用LWP和HTML :: Parser? – ZyX 2012-01-13 16:21:03

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

如果你想进入下级自己,也有很多的好的工具的基础上,包括前面提到的WWW ::机械化,HTML::TreeBuilderHTML::TreeBuilder::XPathHTML::TableExtractor多。

+0

感谢这个信息,@hobbs为了提取更少量的内容,它显示这将工作正常。在一个更大的提取过程中,我让vim使用它的标记功能循环遍历文档的各个方面 - 基本上通过从文档中的各个点对它们进行分组来构建信息,并将最终的字符串放在一起进行上传 - 循环几千次。它看起来不会像使用Perl(?)那样动态地做到这一点(但我仍在阅读。)感谢让我开始。 – Ricalsin 2012-01-16 20:33:19

+0

WOOPS!我说话太快了(我认为)。 @hobbs我一直在阅读关于Perl,perlmod和你提到的模块。我感谢你的指导。如果可能,你可以发布一个关于如何访问页面的解释,获取DOM的xpath并将值赋给变量?只是一个初学者课程。我有问题拉动触发器。 :) 再次感谢。 – Ricalsin 2012-01-19 21:44:41

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

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

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

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

驱动程序:Capybara-WebkitCapybara-Mechanize

  • 能够使用CS,或XPath选择,无论你是舒服。

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