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