2011-10-19 67 views
2

我想制作一个程序,它将检索一些URL信息。 例如我给下面的网址,从 librarything从url中检索信息

我怎样才能检索到所有下方的“标签”选项卡中的话,像

黑图书馆幻想Thanquol & Boneripper Thanquol和骨开膛手战锤?

我正在考虑使用java,并设计一个数据挖掘封装,但我不知道如何开始。任何人都可以给我一些建议吗?

编辑: 你给了我很好的帮助,但我想问别的。 对于每个标签,我们可以看到每个标签被使用了多少次,当我们按下“数字”按钮时。我怎样才能找回这个号码呢?

+0

如果您要删除HTML,我建议使用Python或Perl。当我编写类似于您的示例的程序时,我对Python有很好的体验,但目前无法真正分享任何内容。有一个特别为[在Python中解析HTML]而制作的库(http://docs.python.org/library/htmlparser.html),您也可以查看[regex](http://docs.python.org/ library/re.html)和[urllib](http://docs.python.org/library/urllib.html)。 – Griffin

+1

@Griffin:这似乎是一个基于DOM的解析器,只会导致丑陋的样板代码。此外,使用正则表达式来解析HTML是普通[疯狂](http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html)。 – BalusC

+0

@BalusC我自己并没有使用HTML解析器,使用正则表达式后,我被重定向到Freenode上Python通道上的库。对此,似乎有不同的看法,有些人说没关系,有些人说这不好。感谢您的链接,我会检查出来。 – Griffin

回答

4

您可以使用HTML解析器,如Jsoup。它允许您使用简单的CSS selectors选择感兴趣的HTML元素:

E.g.

Document document = Jsoup.connect("http://www.librarything.com/work/9767358/78536487").get(); 
Elements tags = document.select(".tags .tag a"); 

for (Element tag : tags) { 
    System.out.println(tag.text()); 
} 

它打印

Black Library 
fantasy 
Thanquol & Boneripper 
Thanquol and Bone Ripper 
Warhammer 

请注意,你应该阅读网站的robots.txt - 如果任何 - 和阅读服务的网站的条款 - 如果任何 - 或者你的服务器可能会迟早IP被禁。

+0

我推荐http://www.selectorgadget.com/作为CSS选择器,它会生成一个有效的xPath – Aboelnour

+0

这只是一个从html中获取CSS以在Element.select(String selector selector)函数中使用它的工具。 – Aboelnour

0

我已经完成了这之前使用PHP与页面刮,然后使用正则表达式将HTML解析为字符串。

Example here

我想有一个在Java和其他语言类似的东西。这个概念是类似的:

  1. 加载页面数据。
  2. 解析数据,(即用一个正则表达式,或者通过DOM模型,并使用一些CSS选择器或一些XPath选择。
  3. 你想与数据:)

什么值得记住的是,有些人可能不会欣赏你的数据挖掘他们的网站,并大规模地获利/重新分发它。