使用 Jsoup 获取维基百科文章的第一段

塔尔巴达

我正在尝试使用以下代码获取维基百科文章的第一段:

public String getText(){
    try{
        Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/Israel").get();
        Elements paragraphs = doc.select("p");
        Element firstParagraph = paragraphs.first();
        return firstParagraph.text();
    }
    catch (IOException e){return "Failed";}
}

这是我在StackOverflow上的线程中找到的所有方法中最简单的方法。

我没有得到第一段,我得到的只是这部分: 我从 jsoup 得到的部分

但我想得到这部分: 维基百科第一段

我该如何正确使用它?
我正在寻找一个通用的解决方案......谢谢。

马坦伊扎克

这实际上取决于页面的内容。
例如,您提供了一篇 Wikipedia 文章,发现第一段(即 - with <p> tag)是该国家/地区的坐标,而不是有关该国家/地区的实际第一段。
这是由于用于描述国家/地区的维基百科模板。

那里有很多模板——适用于国家、公司、个人等。
每个主题都是一个具有不同大纲的特定模板,因此很难为您提供帮助并为您提供有助于您未来情景的一般答案。

具体参考您的问题,您可以排除坐标并获得页面上真正的第一段。
你的代码应该是:

public String getText(){
    try{
        Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/Israel").get();
        Elements paragraphs = doc.select("p:not(:has(#coordinates))");
        Element firstParagraph = paragraphs.first();
        return firstParagraph.text();
    }
    catch (IOException e) {
        return "Failed";
    }
}

通过查看源代码,您可以注意到坐标出现在 a 中<p> tag(这就是您得到这个结果的原因),并且在该标签内,还有另一个<span> tagid 名称为“坐标”的。由于您想从结果中删除坐标,因此您只能使用它jsoup pseudo selectors来获取所需的内容。


由于很难用一般的方式回答这类问题,因此,从上面列出的原因出发,我想补充一些技巧以进一步使用:

  1. 建议仔细查看您正在处理的页面的源代码并检查所有标签。这样,您就可以找到一些可能的问题(例如这个问题中出现的问题),并在编写提取页面所需部分的代码时考虑这些因素。
  2. 执行CSS Queryin后检查元素列表jsoup您可以通过代码或通过检查try-jsoup 站点上的查询来完成您可以输入查询并查看元素列表。这样你可能会意识到结果不是你所期望的。有时它不会像在这种情况下那么容易,您可能会使用元素列表来更改您的代码(例如,在您的代码中使用Element firstParagraph = paragraphs.get(1);而不是使用Element firstParagraph = paragraphs.first();)。然后,您可以测试您的新改进CSS Query,看看它是否适合您。
  3. 熟悉必须提供的不同选择器会很有帮助jsoup
    这将使您的工作更轻松。

希望能有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Jsoup获取图像网址

来自分类Dev

使用jsoup在标签后获取某些文本

来自分类Dev

使用JSoup从网站获取文本

来自分类Dev

使用jsoup获取img src

来自分类Dev

获取维基百科文章摘要

来自分类Dev

使用API搜索维基百科

来自分类Dev

使用jsoup获取验证码图像

来自分类Dev

使用JSoup获取表的数据代码值

来自分类Dev

从中文维基百科中检索第一段

来自分类Dev

Facebook使用什么API来显示完整的维基百科文章?

来自分类Dev

JSoup使用循环获取多个值

来自分类Dev

如何使用Jsoup提取新闻文章?

来自分类Dev

使用Ajax获取随机维基百科摘录

来自分类Dev

如何使用jsoup获取特定的div

来自分类Dev

使用Jsoup从网页获取不带标签的文本

来自分类Dev

使用jsoup从html获取属性

来自分类Dev

维基百科用jsoup抓取纯文本和超链接

来自分类Dev

使用jsoup从网站获取所需信息

来自分类Dev

使用JSOUP获取父div的内部内容

来自分类Dev

使用jsoup获取表的内容

来自分类Dev

使用JSoup获取一些属性

来自分类Dev

如何获取维基百科文章的默认图片?

来自分类Dev

无法使用维基百科的响应JSON

来自分类Dev

如何使用维基百科 API 获取出生地点

来自分类Dev

如何使用mediawiki api获取维基百科文章中的所有网址(不仅仅是标题)?

来自分类Dev

如何使用 mwapi 库获取维基百科页面?

来自分类Dev

使用python从维基百科中抓取表格:无法获得一列

来自分类Dev

JSoup:获取维基百科页面摘要

来自分类Dev

如何使用BeautifulSoup仅获取维基百科页面上所有表格的第一行数据?