gpt4 book ai didi

Java jsoup 选择内容

转载 作者:行者123 更新时间:2023-12-01 11:54:21 26 4
gpt4 key购买 nike

我有一个 html 文件,其中包含以下许多代码块:

<div class="f-icon m-item " data-ctrdot="60055294621"> 
<div class="item-main util-clearfix">
<div class="content">
<div class="cwrap">
<div class="cleft">
<div class="lwrap">
<h2 class="title"><a href="http://www.alibaba.com/product-detail/Sunnytex-Best-Selling-wind-proof-Soft_60055294621.html?s=p" title="Sunnytex Best Selling wind proof Soft Shell Winter Black Wool Coat" data-hislog="60055294621" data-pid="60055294621" data-domdot="id:2678,pid:60055294621,ext:'|n=2|s=p|t={{attr target}}'" target="_blank" data-p4plog="60055294621">Sunnytex Best Selling wind proof Soft Shell Winter Black Wool Coat</a> </h2>
<div class="attr">
US $23.5-24.8 /
<em>Piece</em>
<em>( FOB Price)</em>
</div>
<div class="attr">
500 Pieces
<em>(Min. Order)</em>
</div>
<div class="kv-prop util-clearfix">
<div class="kv" title="Product Type: Coats">
Product Type:
<b>Coats</b>
</div>
<div class="kv" title="Age Group: Adults">
Age Group:
<b>Adults</b>
</div>
.... (many other stuff not shown here)
</div>
</div>
</div>
</div> (end)

我想提取所有链接,例如 "http://www.alibaba.com/product-detail/Custom-3D-Made-Printed-Blank-Hoodies_60081368914.html?s=p".

我写道:

Document doc = Jsoup.connect(catUrl).get();
Elements products = doc.select("div.f-icon m-item").select("h2.title").select("a[href]");
for(Element prodUrl: products){
System.out.println(prodUrl.html());
itemUrls.addItem(prodUrl.html());
}

所以基本上我想将所有产品页面 url 放入名为 itemUrls 的哈希集中,但 products 中似乎没有任何内容。 Jsoup.connect(catUrl).get() 工作正常,可以将网页返回给我,但 select 方法似乎不起作用。任何意见将不胜感激。谢谢。

最佳答案

空格用于描述ancestor child关系,所以div.f-icon m-item代表 divf-icon类,它会尝试查找 m-item其中的元素。

换句话说doc.select("div.f-icon m-item")doc.select("div.f-icon").select("m-item") 相同它只能找到类似的东西

<div class="f-icon">
...
<m-item>...</m-item>
...
</div>

这不是你想要的。

如果要选择具有两个类的元素,请使用 element.class1.class2句法。

所以而不是

doc.select("div.f-icon m-item").select("h2.title").select("a[href]")

你可以把它写成

doc.select("div.f-icon.m-item h2.title a[href]")
// ^^^^^^^^^^^^^^^^^ div with two classes "f-icon" and "m-item"

接下来是prodUrl.html()将返回您用作链接表示的文本,例如 foo<a href="google.com"> foo .

您似乎想要的是 href 的值属性。为此,请使用 prodUrl.attr("href") .

所以你的代码看起来或多或少像

Document doc = Jsoup.connect(catUrl).get();
Elements products = doc.select("div.f-icon.m-item h2.title a[href]");
for(Element prodUrl: products){
System.out.println(prodUrl.attr("href"));
itemUrls.addItem(prodUrl.attr("href"));
}

关于Java jsoup 选择内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com