2014-04-23 2 views
0

나는 웹 사이트의 테이블 내용과 함께 각 테이블 바로 앞에 단락을 추출해야하는 요구 사항이 있습니다.jsoup를 사용하여 각 html 테이블 앞에 단락을 추출

jsoup를 사용하여 테이블 데이터를 쉽게 추출 할 수 있지만 테이블 이전에 단락을 추출 할 수는 없습니다. 나는 일을 다음과 같은 시도 : -

1. doc.select("p") but its giving extra values because some text in table columns are also in <p> tag. 
2. getElementsByTag but no luck. 

샘플 테이블 : 내가 추출해야

<p> 
<a id="table heading" name="table name"></a> 
<b>Sports equipments</b> 
</p> 
<table width="98%" cellpadding="0" border="1"> 
<tbody> 
<tr valign="top" bgcolor="#ffffcc" align="left"> 
<th width="25%" scope="col">Company</th> 
<th width="25%" scope="col">Product</th> 
<th width="20%" scope="col">Availability</th> 
<th width="55%" scope="col">Related Information</th> 
<th width="20%" scope="col"> 
</tr> 
<tr> 
<td width="18%" valign="top" rowspan="2"> 
<div> 
Nike 
<br> 
1-800-545-8800 
<br> 
<br> 
<br> 
</div> 
</td> 
<td width="10%" valign="top"> 
<div>sports kit</div> 
</td> 
<td width="15%" valign="top" rowspan="2"> 
<div>Available</div> 
</td> 
<td width="24%" valign="top" rowspan="2"> 
<div>Product is available and shipping.</div> 
</td> 
<td width="16%" valign="top" rowspan="2">Demand increase.</td> 
<td width="12%" valign="top" rowspan="2"> 
<div> 
<div>3/26/2014</div> 
</td> 
</tr> 
</table> 

: 테이블 내용과 함께

<b>Sports equipments</b> 

답변

0

당신은 당신의 선택을 확장 할 수 있습니다 여기까지 : "p > b". 내가 전체 HTML을 가지고 있지 않기 때문에

, 그것이 작동하는지 말하기 어렵지만, 당신의 예를 들어 그것을 수행합니다

final String html = ... // the html of your example 
    Document doc = Jsoup.parse(html); 

    /* 
    * Selects b-tags, that are direct childs of p-tags. 
    */ 
    for(Element element : doc.select("p > b")) 
    { 
     System.out.println(element); 
    } 

이 인쇄 :

<b>Sports equipments</b> 
+0

을 고마워, 그 일하고 또한 하나의 대안 방법을 찾았습니다 – OneUser

+0

Document doc = Jsoup.connect (html) .get(); (int i = 0; i OneUser

0
Document doc = Jsoup.connect(html).get(); 
Elements table = doc.select("table”); 
for (int i = 0; i < table.size(); i++) { 
    Element tablevalue = table.get(i); 
    Element para = tablevalue.previousElementSibling(); 
    System.out.println(para.text()); 
} 
관련 문제