我试图选择直接从父级下降的子元素,但我想使用多个选择器。我已经尝试了以下的
"> p, >h3"
但它会抛出SelectorParseException
HTML示例代码(我试图获取第一个<h3>
代码和后面的两个<p>
代码:
<div class="content">
<h3 class="crossheading">Anschlag erinnert an Attentat in
Westgate-Shopping-Mall</h3>
<p>Im Lauf des viertägigen Dramas starben mehr als 70
Menschen, darunter die fünf Attentäter; rund 175 weitere
Personen wurden verletzt. Teile der Mall stürzten in Folge der
Kampfhandlungen ein.</p>
<p>Seit ihrer Vertreibung aus der somalischen Hauptstadt Mogadischu
2011 verübte die Terrorgruppe al-Shabaab vermehrt Anschläge
im benachbarten Kenia und Uganda.</p>
<div class="infoEl center edge">
<div class="clearfix">
<header>
<h2>Dschihadistische Terrorgruppen weltweit</h2>
</header>
<div class="hentry landscape t9l item1">
<a
href="/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706.bild.html"
class="variant"
data-variation="{\u0022name\u0022:\u0022Conversion-AB-060115\u0022,\u0022variations\u0022:[{\u0022url\u0022:\u0022/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706,var\u003da.bild.html\u0022,\u0022prop\u0022:50},{\u0022url\u0022:\u0022/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706,var\u003db.bild.html\u0022,\u0022prop\u0022:50}]}"
rel="bookmark"><img class="photo"
src="http://bilder.bild.de/fotos-skaliert/teaser_40330727_mbqf-1418219891-38921172/2,w=189,c=0.bild.jpg"
alt="Kämpfer der Terrorgruppe „Islamischer Staat im Irak und in Syrien“" />
<ul>
<li class="premium bildplus hide-text">Premium BildPlus
Inhalt</li>
</ul>
<h3 class="entry-title">
<span class="kicker">ISIS, al-Qaida, Taliban</span> <span
class="headline"><span>Der große Terror-Check</span></span>
</h3> </a>
<p class="entry-content">
ISIS ist auf den Vormarsch und damit nicht allein! BILD listet auf,
welche Dschihad-Gruppen es gibt und wo sie agieren.<span> <a
href="/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706.bild.html"
class="variant"
data-variation="{\u0022name\u0022:\u0022Conversion-AB-060115\u0022,\u0022variations\u0022:[{\u0022url\u0022:\u0022/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706,var\u003da.bild.html\u0022,\u0022prop\u0022:50},{\u0022url\u0022:\u0022/bild-plus/politik/ausland/isis/die-weltkarte-des-terrors-37906706,var\u003db.bild.html\u0022,\u0022prop\u0022:50}]}"
rel="tag">mehr...</a></span>
</p>
</div>
</div>
</div>
NOT:".content > h3, .content > p"
无法提供帮助,因为我正在尝试构建通用网络抓取工具。
答案 0 :(得分:1)
您需要使用CSS Selector查询:
Document document = Jsoup.connect("url").get();
//get h3
Element e1 = document.select("div.content > h3").first();
System.out.println(e1.text());
//get first p ..first() used as you are looking only for the first element
Element e2 = document.select("div.content > h3 + p").first();
System.out.println(e2.text());
//get second p
Element e3 = document.select("div.content > h3 + p:nth-child(2)").first();
System.out.println(e3.text());
我希望这有帮助!
您可以在此网站上在线试用选择器查询 - http://try.jsoup.org/
答案 1 :(得分:0)
if (desiredTag != null) {
for (Element el : desiredTag.select("> *")) {
if (!el.tagName().equals("p") && !el.tagName().equals("h3")
&& !el.tagName().equals("h2")
&& !el.tagName().equals("h1")) {
el.remove();
}
}
content = desiredTag.text();
}
此处desiredTag
是<div>
标记,其中content
类