如何使用 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();
我想从 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();