从许多不同的网站屏幕截取数据的最佳方法

时间:2012-09-04 01:15:48

标签: programming-languages html-parsing screen-scraping

我希望从许多不同的地方政府网站上删除公共数据。此数据不以任何标准格式(XML,RSS等)提供,必须从HTML中删除。我需要抓取这些数据并将其存储在数据库中以供将来参考。理想情况下,抓取例程将定期运行,并仅将新记录存储在数据库中。我应该有办法在每个网站上轻松地检测旧记录。

我的大问题是:实现这一目标的最佳方法是什么?我听说有人使用YQL。我也知道一些编程语言也可以更轻松地解析HTML数据。我是一名具有几种不同语言知识的开发人员,并且希望确保我选择适当的语言和方法来开发它,以便于维护。随着网站未来的变化,需要更新抓取例程/代码/逻辑,因此这一点非常简单。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

我会将Perl与模块WWW::Mechanize(Web自动化)和HTML::TokeParser(HTML解析)一起使用。

否则,我会将Python与Mechanize模块(Web自动化)和BeautifulSoup模块(HTML解析)一起使用。

答案 1 :(得分:0)

我同意David关于perl和python的观点。 Ruby也有机械化,非常适合刮擦。我唯一可以远离的是php,因为它没有抓取库和笨拙的正则表达式函数。就YQL而言,它对于某些东西是好的,但是为了抓取它真的只是增加了一些可能出错的事情(在我看来)。

答案 2 :(得分:0)

好吧,我会使用自己的抓取库或相应的command line tool

它可以使用可以在不进行任何实际编程的情况下抓取大多数网页的模板,将来自不同站点的类似数据规范化为规范格式,并验证所有页面都没有更改其布局......

命令行工具不支持数据库,你需要编写一些东西......

(另一方面Webharvest表示它支持数据库,但它没有模板)