从网页上我正在尝试提取包含以下文本的数据,其中我被困在多个类的td。我无法从具有多个类的表的td获取数据。
<div class="Uia">
<div class="eXa Iqc">
<div class="wna fa-Lsa Ala">
<div class="Cr Aha">Contact info</div>
<div class="y4">
<table class="Mlb">
<tbody>
<tr>
<td class="MAa">Address</td>
<td class="QLa adr">
<div class="PHb">
<div>
1600 Amphitheatre Pkwy
Mountain View, CA 94043
United States
</div>
</div></td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
我正在尝试提取td class =“QLa adr”中的地址。请帮帮我。
System.out.println("ADDRESS : " +doc.select("div.Uia > div.eXa.Iqc > div.wna.fa-Lsa.Ala > div.y4 > table[class=Mlb] > tbody > tr > td[class=QLa adr] > div").text());
答案 0 :(得分:3)
您不必使用这样复杂的表达式来获取类,您可以直接选择它们。
此外,[]
语法用于选择属性 - 与普通CSS选择器一样,通过在名称前添加.
来选择类。
在这种情况下,假设您的网站是从字符串加载的(虽然显然您可以使用connect
加载它),但是为了获取您的文本,您可以使用
Document doc = Jsoup.parse(soup);
Elements extractedClasses = doc.select(".QLa.adr");
System.out.println(extractedClasses.text());
打印出来
1600 Amphitheatre Pkwy Mountain View, CA 94043 United States
答案 1 :(得分:-1)
我能够得到它
System.out.println("ADDRESS : " +doc.select("div.Uia > div.eXa.Iqc > div.wna.fa-Lsa.Ala > div.y4 > table[class=Mlb] > tbody > tr > td[class=QLa adr] > div").text());
System.out.println("ADDRESS : " +doc.select("div.Uia > div.eXa.Iqc > div.wna.fa-Lsa.Ala > div.y4 > table[class=Mlb] > tbody > tr > td.QLa.adr > div").text());