2015-02-18 2 views
1

Код HTML размещен в конце, я хочу выбрать элемент «OF». Вот Селектор CSSJsoup CSS-селектор для текстового узла xpath

Elements position = doc.select("#content > table:nth-child(4) > tbody > tr > td:nth-child(1) > table > tbody > tr:nth-child(1) > td > div:nth-child(5) > strong:nth-child(4)"); 

for (Element p : position) { 
    System.out.println(p); 
} 

Вот вывод

p returns "<strong>Position:</strong>" 
p.text() returns "Position:" 

XPath из хрома, когда я изюминка "":

//*@id="content"]/table[1]/tbody/tr/td[1]/table/tbody/tr[1]/td/div[3]/text()[4] 

HTML код

<div style="font-size: 10pt; padding-left:5px;"> 
    <strong>Birthdate:</strong> 8/7/1991 (23 y, 6 m, 10 d) &nbsp;&nbsp;&nbsp;&nbsp; 
    <strong>Bats/Throws:</strong> R/R &nbsp;&nbsp;&nbsp;&nbsp; 
    <strong>Height/Weight:</strong> 6-2/230 &nbsp;&nbsp;&nbsp;&nbsp; 
    <strong>Position:</strong> OF<br /><b>Drafted:</b> <a href="statss.aspx?playerid=10155&position=OF#draft" style="text-decoration:none;">2009 June Amateur Draft - Round: 1, Pick: 25, Overall: 25, Team: Los Angeles Angels</a><br /> 
    <strong>Contract:</strong> <a href="statss.aspx?playerid=10155&position=OF#contract" style="text-decoration:none;">$144.5M/6 Years (2015 - 2020)</a> 
</div> 
<div style="font-size: 10pt; padding-left:5px;"> 
     <strong>Birthdate:</strong> 8/7/1991 (23 y, 6 m, 10 d) &nbsp;&nbsp;&nbsp;&nbsp; 
     <strong>Bats/Throws:</strong> R/R &nbsp;&nbsp;&nbsp;&nbsp; 
     <strong>Height/Weight:</strong> 6-2/230 &nbsp;&nbsp;&nbsp;&nbsp; 
     <strong>Position:</strong> OF<br /><b>Drafted:</b> <a href="statss.aspx?playerid=10155&position=OF#draft" style="text-decoration:none;">2009 June Amateur Draft - Round: 1, Pick: 25, Overall: 25, Team: Los Angeles Angels</a><br /> 
     <strong>Contract:</strong> <a href="statss.aspx?playerid=10155&position=OF#contract" style="text-decoration:none;">$144.5M/6 Years (2015 - 2020)</a> 
</div> 

Вот й e page, если кому-то интересно http://www.fangraphs.com/statss.aspx?playerid=10155&position=OF

+0

«OF» является четвертым текстовый узел внутри элемента DIV. К сожалению, в css вы не можете настроить таргетинг на текстовый узел с помощью селектора. –

ответ

2

Вы не можете написать селектор css для текстового узла («OF» - это текстовый узел, содержащийся в вашем целевом элементе div). Так что вам нужно будет принести программно как это (необходимость jsoup> = 1.6.2): ​​

// select container div element 
Elements position = doc.select("#content > table:nth-child(4) > tbody > tr > td:nth-child(1) > table > tbody > tr:nth-child(1) > td > div:nth-child(5)"); 
// extract the element from the list returned 
Element element = .... 
// TODO will need to check that the List exists and have at least four elements here 
TextNode ofNode = element.textNodes().get(4); 
ofNode.text(); // this will contain "OF" 
+0

У меня есть jsoup 1.8.1, и я получаю следующую ошибку: «метод textNodes не определен для элементов типа» – user3363135

+0

да, извините, я подразумевал, что ... вам нужно извлечь «элемент» из коллекции «Элементы» вы получаете от 'doc.select' (например, с циклом, который вы делали в своем примере) –

+0

Благодарим вас за разъяснение, оно работает сейчас. Спасибо за вашу помощь! – user3363135