java - 维基百科第一段

标签 java parsing web-scraping jsoup wikipedia

我正在编写一些 Java 代码,以便在使用维基百科的文本上实现 NLP 任务。如何使用 JSoup 提取维基百科文章的第一段?

非常感谢。

最佳答案

这非常简单,而且对于您要从中提取信息的每个半结构化页面,该过程都非常相似。

首先,您必须唯一标识所需信息所在的DOM 元素。最简单的方法是使用网络开发工具,例如Firebug。在 Firefox 中,或者与 IE(> 6,我认为)和 Chrome 捆绑在一起的那些。

使用文章 Potato 例如,您会发现 <p>您感兴趣的段落在以下 block 中:

<div class="mw-content-ltr" lang="en" dir="ltr">
  <div class="metadata topicon" id="protected-icon" style="display: none; right: 55px;">[...]</div>
  <div class="dablink">[...]</div>
  <div class="dablink">[...]</div>
  <div>[...]</div>
  <p>The potato [...]</p>
  <p>[...]</p>
  <p>[...]</p>

换句话说,你想找到第一个<p> div 中的元素用class称为 mw-content-ltr .

然后,您只需使用 jsoup 选择该元素,例如使用它的选择器语法(这与 jQuery 的非常相似):

public class WikipediaParser {
  private final String baseUrl; 

  public WikipediaParser(String lang) {
    this.baseUrl = String.format("http://%s.wikipedia.org/wiki/", lang);
  }

  public String fetchFirstParagraph(String article) throws IOException {
    String url = baseUrl + article;
    Document doc = Jsoup.connect(url).get();
    Elements paragraphs = doc.select(".mw-content-ltr p");

    Element firstParagraph = paragraphs.first();
    return firstParagraph.text();
  }

  public static void main(String[] args) throws IOException {
    WikipediaParser parser = new WikipediaParser("en");
    String firstParagraph = parser.fetchFirstParagraph("Potato");
    System.out.println(firstParagraph); // prints "The potato is a starchy [...]."
  }
}

关于java - 维基百科第一段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286786/

相关文章:

java - 在 Java 中缩放图像/图标

python - 如何解析字符串并返回嵌套数组?

java - JSON 解析器仅获取 JSON 的一部分

ruby - 如何使用 Nokogiri 和 Mechanize 抓取 &lt;script&gt; 标签

java - 位打包导致 Java 中的错误值

java - 使用 RequestScoped (faces) 和 RequestScoped (context) 有什么区别

java - 从 byte[] 创建 com.lowagie.text.Image 的实例

java - 将字符串从数组拆分为另外 3 个时出现 ArrayIndexOutOfBoundsException

python - 在 Python 中打印 selenium 网络元素的 HTML 文本

python - 使用 Python 解析 DOM 以提取数据