Jsoup:从table元素获取链接

时间:2018-01-24 15:12:46

标签: java jsoup

以下是表格的一部分:

<p align="center"><font size="1" color=red> 16 </font></td>

我需要从红色元素中获取url:

Document document = Jsoup.connect(siteUrl).execute().parse();

Element table = document.select("table").get(2);
Elements links = table.getElementsByTag("a");
String date = table.select("*[color*='red']").first().toString();
System.out.println("Date: " + date);
for (Element link: links) {
    String url = link.attr("href");
    String text = link.text();

    System.out.println(text + ", " + url);
}

我决定使用jsoup库,这就是我尝试做的事情:

import pandas as pd
import itertools

df = pd.DataFrame([[1, 'A'], [1, 'B'], [1, 'A'], [2, 'B'], [3, 'B'], [2, 'B']], columns=['user', 'category'])

result = df.groupby('category')['user'].agg(lambda x: set(x)).to_dict()

for i, j in itertools.combinations(result, 2):
    result[x] = result[i] & result[j]

result = {k: len(v) for k, v in result.items()}

print(result)

# output
# {'A': 1, 'B': 3, ('A', 'B'): 1}

但是这样我就可以得到这个元素和所有链接。而且我认为要获取所有网址列表并使用“日期”查找所需内容并不是最聪明的事情。那么有人可以建议,我如何应对这项任务?

1 个答案:

答案 0 :(得分:1)

我假设示例中的HTML是拼写错误,因为它格式不正确(即ap标记缺少关闭标记。)

如果HTML有效,则在选择表元素后,以下代码将获得所需的URL:

Element redElement = table.select("*[color*='red']").first();

// Get the sibling (a tag) of its parent (p tag) and get the value of href.
String url = redElement.parent().previousElementSibling().attr("href");
System.out.println("URL: " + url);