【问题标题】:retrieve information from a url从 url 检索信息
【发布时间】:2011-12-10 23:12:30
【问题描述】:

我想制作一个程序来检索一些信息作为 url。 例如,我给出下面的网址,来自 librarything

如何检索“标签”选项卡下的所有单词,例如

Black Library 幻想 Thanquol & Boneripper Thanquol 和 Bone Ripper 战锤?

我正在考虑使用 java,并设计一个数据挖掘包装器,但我不知道如何开始。谁能给我一些建议?

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

【问题讨论】:

  • 如果您要使用 HTML,我建议您使用 Python 或 Perl。当我制作与您的示例类似的程序时,我对 Python 有很好的体验,但目前无法真正分享任何内容。有专门为parsing HTML in Python制作的库,也可以查看regexurllib
  • @Griffin:这似乎是一个基于 DOM 的解析器,只会导致丑陋的样板代码。此外,使用正则表达式解析 HTML 是普通的 insane.
  • @BalusC 我自己没有使用过 HTML 解析器,使用正则表达式后,我被重定向到 Freenode 上 Python 频道上的那个库。对此似乎众说纷纭,有人说可以,有人说不行。谢谢你的链接,我去看看。

标签: java wrapper data-mining information-retrieval


【解决方案1】:

在使用 PHP 进行页面抓取之前,我已经这样做了,然后使用正则表达式将 HTML 解析为字符串。

Example here

我想在 java 和其他语言中也有类似的东西。概念类似:

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

值得记住的是,有些人可能不喜欢你对他们的网站进行数据挖掘并大规模获利/重新分发它。

【讨论】:

    【解决方案2】:

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

    例如

    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 封禁。

    【讨论】:

    • 我推荐 selectorgadget.com 作为 CSS 选择器,它会生成一个有效的 xPath
    • 这只是一个从 html 中获取 CSS 以在 Element.select(String selector) 函数中使用它的工具。
    猜你喜欢
    • 2011-03-26
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多