Java 使用jsoup获取元素外部但元素旁边的文本 爱德蒙罗斯坦德街10号-马赛13006 Tél:04.33.54.03.09 传真:04.11.54.29.85 电子邮件: Début D'activité:10/06/2013
我试图从上面的代码中提取电子邮件、电话、姓名和日期。我已经设法得到了我的名字和电子邮件地址,尽管我被卡住了 我还想得到电话,日期和传真,这似乎是外部因素Java 使用jsoup获取元素外部但元素旁边的文本 爱德蒙罗斯坦德街10号-马赛13006 Tél:04.33.54.03.09 传真:04.11.54.29.85 电子邮件: Début D'activité:10/06/2013,java,html,jsoup,Java,Html,Jsoup,我试图从上面的代码中提取电子邮件、电话、姓名和日期。我已经设法得到了我的名字和电子邮件地址,尽管我被卡住了 我还想得到电话,日期和传真,这似乎是外部因素 <tr class="s"> <td style="text-align: center; width: 100px"></td> <td colspan="3"> <a target="_blank" href="" title="Localiser ave
<tr class="s">
<td style="text-align: center; width: 100px"></td>
<td colspan="3">
<a target="_blank" href="" title="Localiser avec Google Maps">
<img src="images/gm.gif?v=7" alt="Google Maps" class="gm noauto" align="right">
</a>
10, rue Edmond Rostand - 13006 MARSEILLE
<br>
<strong>Tél :</strong> 04.33.54.03.09<br>
<strong>Fax :</strong> 04.11.54.29.85<br>
<strong>Email :</strong> <a href="mailto:wsedrftg.tgtg.rftg@gmail.com" class="icone email">wsedrftg.tgtg.rftg@gmail.com</a><br>
<strong>Début d'activité :</strong> 10/06/2013<br>
</td>
</tr>
for(元素标题:新闻标题)
{
元素trs=标题。选择(“tr.t”);
元素phnDiv=headline.select(“tr.s td:eq(1)”;
对于(int l=0;l
我不认为您可以使用jsoup
直接获得所需的部件,因为它们不是元素
您可以做的是获取
-元素的html()
,然后使用正则表达式通过类似的正则表达式获取phone、fax和date
for (Element headline : newsHeadlines)
{
Elements trs = headline.select("tr.t");
Elements phnDiv = headline.select("tr.s td:eq(1)");
for (int l = 0; l < trs.size(); l++)
{
j++;
Elements name = trs.get(l).select("th");
Elements emailAddress = phnDiv.get(l).select("a");
Elements phone = phnDiv.get(l).select("strong:contains(Tél :)");
Elements faxx = phnDiv.get(l).select("strong:contains(Fax :)");
//Elements debutdactivite = phnDiv.get(l).select("strong:contains(Début d'activité :)");
String contactName = name.text();
String email = emailAddress.text();
String tel = phone.text().replace("Tél :", "");
String fax = faxx.text().replace("Fax :", "");
//String date = debutdactivite.text();
System.out.println(j + " Name : " + contactName + " Email : " + email + " Phone : " + tel + " Fax : " + fax );
}
}
"<.*Fax.*> (.*?)<br>"
(.*)“ 你应该这样工作
for (Element headline : newsHeadlines)
{
Elements trs = headline.select("tr.t");
Elements phnDiv = headline.select("tr.s td:eq(1)");
for (int l = 0; l < trs.size(); l++)
{
j++;
Elements name = trs.get(l).select("th");
Elements emailAddress = phnDiv.get(l).select("a");
Elements phone = phnDiv.get(l).select("strong:contains(Tél :)");
Elements faxx = phnDiv.get(l).select("strong:contains(Fax :)");
//Elements debutdactivite = phnDiv.get(l).select("strong:contains(Début d'activité :)");
String contactName = name.text();
String email = emailAddress.text();
String tel = phone.text().replace("Tél :", "");
String fax = faxx.text().replace("Fax :", "");
//String date = debutdactivite.text();
System.out.println(j + " Name : " + contactName + " Email : " + email + " Phone : " + tel + " Fax : " + fax );
}
}
"<.*Fax.*> (.*?)<br>"
@测试
公开无效测试(){
最终模式p=Pattern.compile(“(.*?”
”);
最终匹配者m=p.Matcher(“电话:04.11.55.29.85
传真:04.11.55.29.85
”;
m、 匹配();
资产质量(“04.11.54.29.85”,m.group(1));
}
我不认为您可以使用jsoup
直接获得所需的部件,因为它们不是元素
您可以做的是获取
-元素的html()
,然后使用正则表达式通过类似的正则表达式获取phone、fax和date
for (Element headline : newsHeadlines)
{
Elements trs = headline.select("tr.t");
Elements phnDiv = headline.select("tr.s td:eq(1)");
for (int l = 0; l < trs.size(); l++)
{
j++;
Elements name = trs.get(l).select("th");
Elements emailAddress = phnDiv.get(l).select("a");
Elements phone = phnDiv.get(l).select("strong:contains(Tél :)");
Elements faxx = phnDiv.get(l).select("strong:contains(Fax :)");
//Elements debutdactivite = phnDiv.get(l).select("strong:contains(Début d'activité :)");
String contactName = name.text();
String email = emailAddress.text();
String tel = phone.text().replace("Tél :", "");
String fax = faxx.text().replace("Fax :", "");
//String date = debutdactivite.text();
System.out.println(j + " Name : " + contactName + " Email : " + email + " Phone : " + tel + " Fax : " + fax );
}
}
"<.*Fax.*> (.*?)<br>"
(.*)“ 你应该这样工作
for (Element headline : newsHeadlines)
{
Elements trs = headline.select("tr.t");
Elements phnDiv = headline.select("tr.s td:eq(1)");
for (int l = 0; l < trs.size(); l++)
{
j++;
Elements name = trs.get(l).select("th");
Elements emailAddress = phnDiv.get(l).select("a");
Elements phone = phnDiv.get(l).select("strong:contains(Tél :)");
Elements faxx = phnDiv.get(l).select("strong:contains(Fax :)");
//Elements debutdactivite = phnDiv.get(l).select("strong:contains(Début d'activité :)");
String contactName = name.text();
String email = emailAddress.text();
String tel = phone.text().replace("Tél :", "");
String fax = faxx.text().replace("Fax :", "");
//String date = debutdactivite.text();
System.out.println(j + " Name : " + contactName + " Email : " + email + " Phone : " + tel + " Fax : " + fax );
}
}
"<.*Fax.*> (.*?)<br>"
@测试
公开无效测试(){
最终模式p=Pattern.compile(“(.*?”
”);
最终匹配者m=p.Matcher(“电话:04.11.55.29.85
传真:04.11.55.29.85
”;
m、 匹配();
资产质量(“04.11.54.29.85”,m.group(1));
}
您应该能够使用nextSibling()
方法获取这些值。它返回一个节点
,因此您不必担心元素中的值
一旦获取了所需的元素,代码将如下所示:
@Test
public void test() {
final Pattern p = Pattern.compile("<.*?Fax.*?> (.*?)<br>");
final Matcher m = p.matcher("<strong>Tel :</strong> 04.11.55.29.85<br> <strong>Fax :</strong> 04.11.55.29.85<br>");
m.matches();
assertEquals("04.11.54.29.85", m.group(1));
}
这将直接抓取已选择的phone和faxx元素旁边的节点。您应该能够使用
nextSibling()
方法获取这些值。它返回一个节点
,因此您不必担心元素中的值
String tel = phone.nextSibling().toString();
String fax = faxx.nextSibling().toString();
一旦获取了所需的元素,代码将如下所示:
@Test
public void test() {
final Pattern p = Pattern.compile("<.*?Fax.*?> (.*?)<br>");
final Matcher m = p.matcher("<strong>Tel :</strong> 04.11.55.29.85<br> <strong>Fax :</strong> 04.11.55.29.85<br>");
m.matches();
assertEquals("04.11.54.29.85", m.group(1));
}
这将直接抓取已选择的phone和faxx元素旁边的节点。for(元素标题:NewsTitles){
String tel = phone.nextSibling().toString();
String fax = faxx.nextSibling().toString();
元素trs=标题。选择(“tr.t”);
元素phnDiv=headline.select(“tr.s td:eq(1)”;
对于(int l=0;l
现在,在我运行完这个之后,我得到了所有的结果,感谢@Justin为我带来了启示。for(元素标题:新闻标题){
元素trs=标题。选择(“tr.t”);
元素phnDiv=headline.select(“tr.s td:eq(1)”;
对于(int l=0;l