3

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

4

5 回答 5

2

首先,您需要熟悉HTML DOMJava 中的解析器,例如JTidy。这将帮助您从HTML文件中提取所需的内容。一旦你有了必要的东西,你就可以JDBC使用database.

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

于 2010-03-18T15:32:18.290 回答
1

我正在使用 JSoup 运行刮板。我是菜鸟,但发现它非常直观且易于使用。它还能够解析范围广泛的或源 html、XML、RSS 等。

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

于 2013-01-11T20:17:07.363 回答
0

使用JTidy,您可以从 HTML 中删除数据。然后你就可以使用JDBC了。

于 2010-03-19T04:31:36.717 回答
0

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

至少这是我使用的技术。

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

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

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

于 2010-03-18T16:05:47.300 回答
0

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

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

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

于 2010-03-18T16:07:18.303 回答