使用Java从HTML页面中截取数据,输出到数据库

时间:2010-03-18 15:29:21

标签: java scraper

我需要知道如何创建一个刮刀(用Java)从HTML页面收集数据并输出到数据库...没有线索从哪里开始所以你可以给我的任何信息都很棒。此外,你在这里不能太基本或简单......谢谢:)。

5 个答案:

答案 0 :(得分:2)

首先,您需要熟悉Java中的HTML DOM解析器JTidy。这将帮助您从HTML文件中提取所需的内容。一旦掌握了基本内容,就可以使用JDBC加入database

为这项工作使用正则表达式可能很诱人。但不要。 HTML不是常规语言,因此正则表达式不是常规。

答案 1 :(得分:1)

我正在使用JSoup运行一个刮刀我是一个菜鸟但是发现它非常直观且易于使用。它还能够解析各种各样的或源html,XML,RSS等。

我尝试使用htmlunit几乎没有成功。

答案 2 :(得分:0)

很大比例的网站都是基于格式错误的HTML代码。
必须使用HtmlCleaner之类的内容来清理您要解析的源代码。
然后,您可以成功使用XPath提取节点和正则表达式来解析从页面中提取的字符串的特定部分。

至少这是我使用的技术。

您可以使用从HtmlCleaner返回的xHtml作为您的应用程序与您尝试解析的远程页面之间的一种接口。您应该对此进行测试,如果远程页面发生更改,您只需要提取由HtmlCleaner清理的新xHtml,重新调整XPath查询以提取您需要的内容,并针对新接口重新测试您的应用程序代码。

如果你想创建一个MultiThreaded'scraper',请注意HtmlCleaner不是线程安全的(请参阅我的post here)。
这个post可以让您了解如何使用XPath解析格式正确的xHtml。
祝好运! ;)

注意:当我实现我的Scraper时,HtmlCleaner在规范化我想要解析的页面方面做得更好。在某些情况下,jTidy没有做同样的工作,所以我建议你试一试

答案 3 :(得分:0)

我在一个抓取HTML页面的项目中成功使用了lobo browser API。 lobo浏览器项目提供了一个浏览器,但您也可以非常轻松地使用它背后的API。它也将执行javascript,如果javascript操纵DOM,那么当你调查DOM时,这也将反映在DOM中。因此,简而言之,API允许您模仿浏览器,您也可以使用cookie和其他东西。

现在,为了从HTML中获取数据,我首先将HTML转换为有效的XHTML。你可以use jtidy for this。由于XHTML是有效的XML,因此您可以使用XPath轻松检索所需的数据。如果您尝试编写解析原始HTML中的数据的代码,您的代码将很快变得混乱。因此我会使用XPath。

获得数据后,可以将其插入到JDBC的数据库中,或者如果要避免编写过多的SQL,可以使用Hibernate

答案 4 :(得分:0)

使用 JTidy ,您可以从HTML中抓取数据。然后您可以使用 JDBC