Java JSoup:检索不包含特定属性的元素
我有一个包含以下逻辑的表Java JSoup:检索不包含特定属性的元素,java,jsoup,Java,Jsoup,我有一个包含以下逻辑的表 该表显示名称列表 对于包含…->的每一行,该行将不可见 因此,该表可能包含100行,但如果有20行包含class=hiderow,则用户只能在页面上看到80行。我想检索这80行(不是100行)的名称。因此,我需要解析出不包含class=hiderow的数据。我知道如何使用jsoup获取每个名称,我还看到文档中有 :不是与选择器不匹配的(选择器)元素。但我不确定如何使用它。请帮忙 编辑我已经想出了办法。如果有更好的办法,请告诉我。 EDIT2请使用BalusC提供的以下解
…
->的每一行,该行将不可见class=hiderow
,则用户只能在页面上看到80行。我想检索这80行(不是100行)的名称。因此,我需要解析出不包含class=hiderow
的数据。我知道如何使用jsoup
获取每个名称,我还看到文档中有
:不是与选择器不匹配的(选择器)元素。
但我不确定如何使用它。请帮忙
编辑我已经想出了办法。如果有更好的办法,请告诉我。EDIT2请使用BalusC提供的以下解决方案。它干净多了
public void obtainPackageName(String urlLink) throws IOException{
List<String> pdfList = new ArrayList<String>();
URL url = new URL(urlLink);
Document doc = Jsoup.parse(url, 3000);
Element table = doc.select("table[id=mastertableid]").first();
Iterator<Element> rowIter = table.select("tr").iterator();
while(rowIter.hasNext()){
Element row = rowIter.next();
if(!row.className().contains("hiderow")){
Element packageName = row.select("td[class=packagename]").first();
if(packageName != null){
pdfList.add(packageName.text());
}
}
}
}
public void-obtainPackageName(字符串urlink)引发IOException{
List pdfList=new ArrayList();
URL=新URL(URL链接);
documentdoc=Jsoup.parse(url,3000);
Element table=doc.select(“table[id=mastertableid]”)。first();
迭代器rowIter=table.select(“tr”).Iterator();
while(rowIter.hasNext()){
元素行=rowIter.next();
如果(!row.className().包含(“hiderow”)){
元素packageName=row.select(“td[class=packageName]”);
如果(packageName!=null){
pdfList.add(packageName.text());
}
}
}
}
您需要在感兴趣的元素上应用:not()
(在您的情况下是tr
),然后将元素相关CSS选择器传递给它,元素不应在其上匹配(在您的情况下是.hiderow
)
因此,这应该做到:
Document document = Jsoup.connect(urlLink).get();
Elements packagenames = document.select("#mastertableid tr:not(.hiderow) td.packagename");
List<String> pdfList = new ArrayList<String>();
for (Element packagename : packagenames) {
pdfList.add(packagename.text());
}
documentdocument=Jsoup.connect(urlink.get();
Elements packagename=document.select(“#mastertableid tr:not(.hiderow)td.packagename”);
List pdfList=new ArrayList();
对于(元素packagename:packagename){
pdfList.add(packagename.text());
}
这个看起来干净多了,我要试试这个。蒂巴卢斯克