在python自动化中,在table中定位一个文本,怎么知道在第几行?
没有具体的例子,不好说有啥办法。提供两个思路:
- 一般table里面都有id,理论上可以根据id来计算
- 复杂一点就是把整个table每一行都加个列表,然后查列表的索引就知道是第几行
没id ,table每一行是可变的(文本内容是不变,但文本显示在行数是随机的)
那就只有通过遍历来解决问题了
我用文本定位的,咋遍历呢?
利用第三方的解析库去遍历每个tr就能知道在哪行了吧,
可以看看下面这个示例
from bs4 import BeautifulSoup
from bs4.element import Tag
html = """
<html>
<body>
<table border="1">
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>January1</td>
<td>$1002</td>
</tr>
<tr>
<td>January2</td>
<td>$100</td>
</tr>
<tr>
<td>January3</td>
<td>$1020</td>
</tr>
<tr>
<td>Janu4ary</td>
<td>$1020</td>
</tr>
<tr>
<td>Janu6ary</td>
<td>$1500</td>
</tr>
</table>
</body>
</html>
"""
count = 0
soup = BeautifulSoup(html, 'lxml')
print(soup)
for tr in soup.select('tr'):
if 'Janu4ary' in tr.strings:
print(count)
count += 1
示例依赖2个模块
pip install bs4
pip install lxml
用css定位,有个:nth-child语法,可以直接取第n行,然后断言是不是符合预期就可以