在python自动化中,在table中定位一个文本,怎么知道在第几行?

在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行,然后断言是不是符合预期就可以