我有这个html
<html><head><title>Alfresco Content Repository</title><style>body { font-family: Arial, Helvetica; font-size: 12pt; background-color: white; }
table { font-family: Arial, Helvetica; font-size: 12pt; background-color: white; }
.listingTable { border: solid black 1px; }
.textCommand { font-family: verdana; font-size: 10pt; }
.textLocation { font-family: verdana; font-size: 11pt; font-weight: bold; color: #2a568f; }
.textData { font-family: verdana; font-size: 10pt; }
.tableHeading { font-family: verdana; font-size: 10pt; font-weight: bold; color: white; background-color: #2a568f; }
.rowOdd { background-color: #eeeeee; }
.rowEven { background-color: #dddddd; }
</style></head>
<body>
<table cellspacing='2' cellpadding='3' border='0' width='100%'>
<tr><td colspan='4' class='textLocation'>Directory listing for /rep</td></tr>
<tr><td height='10' colspan='4'></td></tr></table><table cellspacing='2' cellpadding='3' border='0' width='100%' class='listingTable'>
<tr><td class='tableHeading' width='*'>Name</td><td class='tableHeading' width='10%'>Size</td><td class='tableHeading' width='20%'>Type</td><td class='tableHeading' width='25%'>Modified Date</td></tr>
<tr class='rowOdd'><td class='textData'><a href="/alfresco/webdav/rep/ED">ED</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Thu, 05 Jan 2017 11:11:14 GMT</td></tr>
<tr class='rowEven'><td class='textData'><a href="/alfresco/webdav/rep/FLOW%20CHART">FLOW CHART</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Thu, 27 Jun 2013 13:30:18 GMT</td></tr>
<tr class='rowOdd'><td class='textData'><a href="/alfresco/webdav/rep/file">file</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Wed, 10 Nov 2021 13:16:49 GMT</td></tr>
</table></body></html>
并且,我试图得到每个标签的href。
例如,
<table cellspacing='2' cellpadding='3' border='0' width='100%'>
<tr><td colspan='4' class='textLocation'>Directory listing for /rep</td></tr>
<tr><td height='10' colspan='4'></td></tr></table><table cellspacing='2' cellpadding='3' border='0' width='100%' class='listingTable'>
<tr><td class='tableHeading' width='*'>Name</td><td class='tableHeading' width='10%'>Size</td><td class='tableHeading' width='20%'>Type</td><td class='tableHeading' width='25%'>Modified Date</td></tr>
<tr class='rowOdd'><td class='textData'><a href="/alfresco/webdav/rep/ED">ED</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Thu, 05 Jan 2017 11:11:14 GMT</td></tr>
首先,您需要解析html,它是要文档的字符串。
final Document document = Jsoup.parse(html);
然后需要选择所有tr
标记,其中包含标记。
final Elements trElements = document.select("tr:has(a)");
之后,您需要浏览找到的每个tr
标记:
for (final Element trElement : trElements) {
//Do stuff
}
final Element aElement = trElement.select("a").first();
final String href = aElement.attr("href");
final String name = aElement.text();
对于date,需要从tr
标记中检索第四个td
标记:
final Element dateTdElement = trElement.select("td").get(3);
只需检索值文本即可获得日期内容:
final String date = dateTdElement.text();
注意:方法select()
接受css查询。所有css查询都是有效的,使用扩展的语法,如':hav()'和其他部分。有关更多细节,请参见Jsoup文档。
public static void main(final String[] args) {
final String html = "<html><head><title>Alfresco Content Repository</title><style>body { font-family: Arial, Helvetica; font-size: 12pt; background-color: white; }\n" +
"table { font-family: Arial, Helvetica; font-size: 12pt; background-color: white; }\n" +
".listingTable { border: solid black 1px; }\n" +
".textCommand { font-family: verdana; font-size: 10pt; }\n" +
".textLocation { font-family: verdana; font-size: 11pt; font-weight: bold; color: #2a568f; }\n" +
".textData { font-family: verdana; font-size: 10pt; }\n" +
".tableHeading { font-family: verdana; font-size: 10pt; font-weight: bold; color: white; background-color: #2a568f; }\n" +
".rowOdd { background-color: #eeeeee; }\n" +
".rowEven { background-color: #dddddd; }\n" +
"</style></head>\n" +
"<body>\n" +
"<table cellspacing='2' cellpadding='3' border='0' width='100%'>\n" +
"<tr><td colspan='4' class='textLocation'>Directory listing for /rep</td></tr>\n" +
"<tr><td height='10' colspan='4'></td></tr></table><table cellspacing='2' cellpadding='3' border='0' width='100%' class='listingTable'>\n" +
"<tr><td class='tableHeading' width='*'>Name</td><td class='tableHeading' width='10%'>Size</td><td class='tableHeading' width='20%'>Type</td><td class='tableHeading' width='25%'>Modified Date</td></tr>\n" +
"<tr class='rowOdd'><td class='textData'><a href=\"/alfresco/webdav/rep/ED\">ED</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Thu, 05 Jan 2017 11:11:14 GMT</td></tr>\n" +
"<tr class='rowEven'><td class='textData'><a href=\"/alfresco/webdav/rep/FLOW%20CHART\">FLOW CHART</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Thu, 27 Jun 2013 13:30:18 GMT</td></tr>\n" +
"<tr class='rowOdd'><td class='textData'><a href=\"/alfresco/webdav/rep/file\">file</a></td><td class='textData'> </td><td class='textData'> </td><td class='textData'>Wed, 10 Nov 2021 13:16:49 GMT</td></tr>\n" +
"\n" +
"\n" +
"</table></body></html>";
final Document document = Jsoup.parse(html);
final Elements trElements = document.select("tr:has(a)");
for (final Element trElement : trElements) {
final Element aElement = trElement.select("a").first();
final String href = aElement.attr("href");
System.out.println("Href : " + href);
final String name = aElement.text();
System.out.println("Name : " + name);
final Element dateTdElement = trElement.select("td").get(3);
final String date = dateTdElement.text();
System.out.println("Date : " + date);
}
}
Href : /alfresco/webdav/rep/ED
Name : ED
Date : Thu, 05 Jan 2017 11:11:14 GMT
Href : /alfresco/webdav/rep/FLOW%20CHART
Name : FLOW CHART
Date : Thu, 27 Jun 2013 13:30:18 GMT
Href : /alfresco/webdav/rep/file
Name : file
Date : Wed, 10 Nov 2021 13:16:49 GMT
嗨,我有一个html文件解析的场景。我正在使用jsoup解析html文件,解析后我想提取头标记(h1、h3、h4)。我用过医生。select()但它将只返回标题标记值,但我的要求是我应该提取h1到h3或h4之间的标记,反之亦然。 所以这里首先搜索html字符串是否包含任何H1,H3,H4。这里我们有h4,所以包括h4,它应该搜索下一个h1或h3,直到h3我们提取字符串并把它放在一个单独的html文
我一直在研究用于数据提取的Jsoup示例,并提取了此链接的一个示例 J汤
“我妈妈有一双蓝眼睛,我爸爸有一双深绿色的眼睛”。我想用JSOUP解析这个句子,并在android textview上用粗体和彩色文本打印出来。这里的“蓝色”是大胆的蓝色。“深绿色”是大胆的颜色。 我需要解析上述html代码,并需要如下显示: 这是一个标题 我母亲有蓝色的眼睛,我父亲有深绿色的眼睛 这是另一个标题 这是一段 下面是我的程序。考虑到文档doc==获取上面的html; 有人能帮我解决吗
如何从下面的html中解析出46389333? 我使用的是JSoup,显然我可以解析文本、标签和其他值。但是我不知道如何解析这个值。即使我只能解析出/exampleTweet/status/46389333,至少我可以解析这个字符串,这要容易得多。问题是,数字变了,显然例子也变了。不过,地位还是存在的,所以也许我可以利用这一点?任何帮助都是巨大的。
问题内容: 当我使用jsoup提取数据时遇到一个职位。数据如下: 我想要这样的数据: 我怎样才能做到这一点?谁能帮我? 问题答案: 您可以将html解析为,选择-Element并获取其文本。 例: 输出:
所以我尝试从pretag获取数据,我设置doc连接到url选择pretag,结果出错了,我需要获取的数据按这里