遍历jsoup中的元素并解析href
Iterating through elements in jsoup and parsing href
我无法从一行 table 数据中获取 href。虽然我能够让它工作,但我想知道是否有人可以解释为什么我的代码在这里工作。
for (Element element : result.select("tr")) {
if (element.select("tr.header.left").isEmpty()) {
Elements tds = element.select("td");
//The line below is what I don't understand
String link = tds.get(0).getElementsByAttribute("href").first().attr("href");
String position = tds.get(1).text();
}
}
我之前使用的那条线在下面是行不通的:
String link = tds.get(0).attr("href");
为什么这一行 return 是一个空字符串?我假设它与我如何遍历 "tr" 选择的元素有关。但是,我不熟悉 Elements 与 Element 的结构。
感谢您的帮助!
Elements
只是一个 ArrayList<Element>
您必须编写额外代码的原因是 <td>
没有 href
属性,因此 tds.get(0).attr("href");
将不起作用。您可能正在尝试从单元格内的 <a>
捕获 href。更长的工作代码说:
For the first cell in the row, get the first element with an @href attribute (i.e. a link), and get
its @href attribute
尝试以下示例(带有示例文档)来更清楚地展示如何访问子链接:
Element result = Jsoup.parse("<html><body><table><tr><td><a href=\"http://a.com\" /</td><td>Label1</td></tr><tr><td><a href=\"http://b.com\" /></td><td>Label2</td></tr></table></body></html>");
for (Element element : result.select("tr")) {
if (element.select("tr.header.left").isEmpty()) {
Elements tds = element.select("td");
String link = tds.get(0).getElementsByTag("a").attr("href");
String position = tds.get(1).text();
System.out.println(link + ", " + position);
}
}
我无法从一行 table 数据中获取 href。虽然我能够让它工作,但我想知道是否有人可以解释为什么我的代码在这里工作。
for (Element element : result.select("tr")) {
if (element.select("tr.header.left").isEmpty()) {
Elements tds = element.select("td");
//The line below is what I don't understand
String link = tds.get(0).getElementsByAttribute("href").first().attr("href");
String position = tds.get(1).text();
}
}
我之前使用的那条线在下面是行不通的:
String link = tds.get(0).attr("href");
为什么这一行 return 是一个空字符串?我假设它与我如何遍历 "tr" 选择的元素有关。但是,我不熟悉 Elements 与 Element 的结构。
感谢您的帮助!
Elements
只是一个 ArrayList<Element>
您必须编写额外代码的原因是 <td>
没有 href
属性,因此 tds.get(0).attr("href");
将不起作用。您可能正在尝试从单元格内的 <a>
捕获 href。更长的工作代码说:
For the first cell in the row, get the first element with an @href attribute (i.e. a link), and get its @href attribute
尝试以下示例(带有示例文档)来更清楚地展示如何访问子链接:
Element result = Jsoup.parse("<html><body><table><tr><td><a href=\"http://a.com\" /</td><td>Label1</td></tr><tr><td><a href=\"http://b.com\" /></td><td>Label2</td></tr></table></body></html>");
for (Element element : result.select("tr")) {
if (element.select("tr.header.left").isEmpty()) {
Elements tds = element.select("td");
String link = tds.get(0).getElementsByTag("a").attr("href");
String position = tds.get(1).text();
System.out.println(link + ", " + position);
}
}