2017-08-01 39 views
0

我想從每個表中使用R提取第一個<tr>標籤。我一直在嘗試使用像firstchild這樣的命令找到正確的選擇器,但我似乎遇到了表中嵌套標籤的問題。我非常感謝一些幫助!如何使用R導航到HTML中特定的<tr>標籤?

<center> 
    <table> 
    <tbody> 
     <tr> 
     <td bgcolor>...</td> 
     <td bgcolor>...</td> 
      </tr> 
     <tr> 
     <td bgcolor>...</td> 
     <td bgcolor>...</td> 
      </tr> 
    </tbody> 
    </table> 
</center> 
<p></p> 
<center> 
    <table> 
    <tbody> 
     <tr> 
     <td bgcolor>...</td> 
     <td bgcolor>...</td> 
      </tr> 
     <tr> 
     <td bgcolor>...</td> 
     <td bgcolor>...</td> 
      </tr> 
    </tbody> 
    </table> 
</center> 
<p></p> 

回答

0

使用rvest

library(rvest) 

html <- read_html(file) 

trs <- html %>% html_nodes('table') %>% html_node('tr') 

trsxml_nodeset矢量其中包含您尋求的<tr>。您可以打印一個這樣的:

toString(trs[1]) 

## "<tr>...</tr>\n" 

或者你可以一個<tr>這樣中提取文本:

trs[1] %>% html_text() 

## "..." 
+0

謝謝您的幫助!我認爲,在提取所有標籤後,仍然存在與找到每棵樹的第一個標籤相關的問題。例如,如果每個表的標籤數量可變,則爲。 –

+0

上面的代碼僅爲每個表* *提供了第一個「」。由於有兩個表格,'trs'中的結果是兩個'',這是您在每個表格中找到的第一個表格。請注意,代碼獲取所有表,然後每個表只有一個「」(這正好是第一個)(這就是爲什麼代碼表示「html_node('tr')」,單數,而不是所有的' 's,它需要'html_nodes('tr)'這是否有意義?你可以檢查它是如何工作的,但在每個''中放入一些不同的文本並查看返回哪些文本。 –

1

您忘記在行中使用td
您的代碼應該是這樣的:

<center> 
    <table> 
    <tbody> 
     <tr><td>...</td></tr> 
     <tr><td>...</td></tr> 
     <tr><td>...</td></tr> 
    </tbody> 
    </table> 
</center> 
<p></p> 
<center> 
    <table> 
    <tbody> 
     <tr><td>...</td></tr> 
     <tr><td>...</td></tr> 
     <tr><td>...</td></tr> 
    </tbody> 
    </table> 
</center> 
<p></p> 

現在,您可以將CSS規則對他們是這樣的:

table tbody tr:first-child { 
    color: red; 
}