使用selenium python选择嵌套html元素

2024-10-01 13:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触硒(PYTHON),曾一度陷入困境,需要专家的帮助。 我的html是这样的:

    <div id='d3_tree'>
       <svg>
         <g transform="translate(20,50)>
            <g class='node'>
                <foreignobject></foreignobject>
                <original_title>
                   <table>
                       <tbody>
                          <tr>
                              <td>t1key1</td>
                              <td>t1val1</td>  
                          </tr> 
                          <tr>
                              <td>t1key2</td>
                              <td>t1val2</td>  
                          </tr> 
                          <tr>
                              <td>t1key3</td>
                              <td>t1val3</td>  
                          </tr> 
                       </tbody> 
                   </table>
                </original_title> 
            </g> 
            <g class='node pe_node'>
                <foreignobject></foreignobject>
                <original_title>
                   <table>
                       <tbody>
                          <tr>
                              <td>t2key1</td>
                              <td>t2val1</td>  
                          </tr> 
                          <tr>
                              <td>t2key2</td>
                              <td>t2val2</td>  
                          </tr> 
                          <tr>
                              <td>t2key3</td>
                              <td>t2val3</td>  
                          </tr> 
                       </tbody> 
                   </table>
                </original_title> 
            </g>
            <g class='node pe_node'>
                <foreignobject></foreignobject>
                <original_title>
                   <table>
                       <tbody>
                          <tr>
                              <td>t3key1</td>
                              <td>t3val1</td>  
                          </tr> 
                          <tr>
                              <td>t3key2</td>
                              <td>t3val2</td>  
                          </tr> 
                          <tr>
                              <td>t3key3</td>
                              <td>t3val3</td>  
                          </tr> 
                       </tbody> 
                   </table>
                </original_title> 
            </g> 
         </g>
       </svg>

</div>

我需要的是上课的所有要素node.pe_节点在每一个节点.penode元素我需要表的第三行第二列的文本。(t2val3 t3val3)

我能得到有阶级的元素node.pe_节点在

^{pr2}$

现在,我迭代peu节点,通过

  for node in pe_nodes:
     petext = node.find_element(By.XPATH, "//tr[3]/td[2]").text //not working
     petext = node.find_element(By.XPATH, "//tr[3]/td[2]").get_text() //not working

有谁能告诉我如何得到所需的文本吗?有没有办法在每个节点元素中引用表列?在


Tags: svgdivnode元素节点titletabletr
2条回答

我找到路了

name = node.find_element_by_xpath(".//tr[2]/td[2]")text
import bs4

soup = bs4.BeautifulSoup(html)
node_pe = [s for s in soup.find_all('g')
           if 'pe_node' in s.attrs.get('class', [])]
col_texts = [s.find_all('tr')[2].find_all('td')[1].text
             for s in node_pe]
print col_texts

它产生:

^{pr2}$

相关问题 更多 >