我正在制作一个刮刀产品价格,我需要忽略像这个网站div类,但它可以改变所有的网站,所以这对我来说真的很麻烦。你可以在这里看到我废弃第一个元素,就像这样
1 - <div class="ProductPrice">
<span id="ctl00_ContentPlaceHolder1_Category1_ctrl_0_ctrl_7_mainGrid_ctl00_PUnit_lblPriceWithTax">47,00 TL</span>
</div>
然后我再次废弃这个废料标签(标签名称可以更改,所以请在回答前考虑这个)
2 - <span id="ctl00_ContentPlaceHolder1_Category1_ctrl_0_ctrl_7_mainGrid_ctl00_PUnit_lblPriceWithTax">47,00 TL</span>
我的代码是:
Elements allElements = newDocument.getAllElements();
for (int j = 0; j < allElements.size(); j++) {
Element element = allElements.get(j);
if (element.text().matches(regex){
// Writing to console.
}
}
答案 0 :(得分:0)
我会尝试(未经测试的代码):
Elements elements = newDocument.select("div[class*=ProductPrice]");
for (Element element : elements) {
Element inner = element.html();
//do whatever you want with "inner", containing your span
}
编辑:在您发表评论之后,我认为您应该使用Elements elements = newDocument.select("*:matches(regex)");
,并使用“正则表达式”提取价格所需的正则表达式。这应该可以让您在不使用element.html();
的情况下使用所需的元素:
Elements elements = newDocument.select("*:matches("+regex+")");
for (Element element : elements) {
//do whatever you want with "inner", containing your span
}
答案 1 :(得分:0)
while (loopBool)
{
if (element.children() != null)
{
if (element.children().size() >= k)
{
if (!element.child(k).text().matches(regex))
{
k++;
}
else
{
element.empty();
loopBool = false;
}
}
else
{
k = 0;
element = element.child(k);
}
}
}
我用控制元素解决了这个问题有一个孩子?那么如果它有孩子,那么检查它们是否匹配正则表达式,如果它们不匹配只是传播孩子以找到可接受的元素。