[英]Selecting nested html elements using selenium 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_node的所有元素,并且在每个node.pe节点元素内部,我需要表的第三行第二列的文本。 (t2val3 t3val3)
我能够获得具有类node.pe_node的元素
pe_nodes = self.driver.find_elements_by_css_selector(".node.vm.node_pe")
现在我遍历pe_nodes以获取第三列的值
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
有人可以指导我如何获取所需的文字吗? 有没有一种方法可以引用每个节点元素中的表列?
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
它产生:
[u't2val3', u't3val3']
我找到了方法
name = node.find_element_by_xpath(".//tr[2]/td[2]")text
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.