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

How do I extract a news article using Jsoup?

我想从 link 中提取新闻 post,我尝试的是 select 使用此代码 class 名称

Document document = Jsoup.connect(newsLink).get();
Elements element = document.getElementsByClass("sty_txt");
story = element.text();

问题是该网站在 .sty_txt 内有一个内部 div 标签用于共享选项。当我在我的应用程序中填充上述代码的结果时,该段落以共享(3 次)开头。

现在如何删除此共享选项和其他杂乱内容以仅显示文章?

您可以从 .sty_txt 元素中删除一些子元素:

Document document = Jsoup.connect(newsLink).get();
Element element = document.getElementsByClass("sty_txt").first();
Elements children = element.children();
for (Element child : children) {
    Elements subChildren = child.children();
    if(child.hasClass("share-icons-box") || child.hasClass("story_tag_smo") ||
        (subChildren.size() > 0 && subChildren.first().hasClass("st_readmore_sp"))){
        child.remove();
    }
}
String story = element.text();
System.out.println("Story: " + story);

此代码将删除共享按钮、标签和阅读更多链接。

或者,您可以仅使用 CSS 选择器:

Document doc = Jsoup.connect(newsLink).get();
story = doc.select("div.sty_txt p:not(:has(span.st_readmore_sp))").text();