简体   繁体   English

Python Selenium:获取表格中某个元素的行列

[英]Python Selenium: Obtain row and column of an element in a table

I have a table that contains lots of diferent elements.我有一张包含许多不同元素的表格。 I want to first look for specific ones (the structure below shows the row of the element 220193) Basically I want to find the element with href 220193 on this big table and then gather all the values that are on the same row than this element.我想首先查找特定的(下面的结构显示元素 220193 的行)基本上我想在这个大表上找到具有 href 220193 的元素,然后收集与该元素在同一行上的所有值。 Then repeat this for other elements 220XYZ.然后对其他元素 220XYZ 重复此操作。

I was thinking of finding element 220193 by link and then gathering the xpath to find position (row and column) in the table and then iterate on the different columns but i can't manage it to work.我正在考虑通过链接查找元素 220193,然后收集 xpath 以在表中找到 position(行和列),然后迭代不同的列,但我无法管理它工作。

 <tr role="row" aria-rowindex="1" class="table-warning"> <td role="cell" aria-colindex="1" class="table-warning b-table-sticky-column"><a href="**">220193</a></td>** <td aria-colindex="2" role="cell" class="">Unknown</td> <td aria-colindex="3" role="cell" class="">XXXXXX</td> <td aria-colindex="4" role="cell" class="">2022-06-30</td> <td aria-colindex="5" role="cell" class="">2022-07-01</td> <td aria-colindex="6" role="cell" class="">XXXXXX</td> <td aria-colindex="7" role="cell" class="table-info">1209</td> <td aria-colindex="8" role="cell" class="table-info">760</td> <td aria-colindex="9" role="cell" class="table-info">449</td> <td aria-colindex="10" role="cell" class="table-info">37.1%</td> <td aria-colindex="11" role="cell" class=""><button type="button" class="btn mr-2 btn-secondary btn-sm"> Open Report </button></td> <td aria-colindex="12" role="cell" class="">16</td> <td aria-colindex="13" role="cell" class="">1176</td> <td aria-colindex="14" role="cell" class="">18</td> <td aria-colindex="15" role="cell" class="">1.5%</td> <td aria-colindex="16" role="cell" class="">2</td> <td aria-colindex="17" role="cell" class="">1174</td> <td aria-colindex="18" role="cell" class="">0</td> <td aria-colindex="19" role="cell" class="">0.0%</td> <td aria-colindex="20" role="cell" class="">0</td> <td aria-colindex="21" role="cell" class="">1166</td> <td aria-colindex="22" role="cell" class="">8</td> <td aria-colindex="23" role="cell" class="">0.7%</td> <td aria-colindex="24" role="cell" class="">14</td> <td aria-colindex="25" role="cell" class="">1152</td> <td aria-colindex="26" role="cell" class="">0</td> <td aria-colindex="27" role="cell" class="">0.0%</td> <td aria-colindex="28" role="cell" class="">0</td> <td aria-colindex="29" role="cell" class="">1146</td> <td aria-colindex="30" role="cell" class="">6</td> <td aria-colindex="31" role="cell" class="">0.5%</td> <td aria-colindex="32" role="cell" class="">265</td> <td aria-colindex="33" role="cell" class="">876</td> <td aria-colindex="34" role="cell" class="">5</td> <td aria-colindex="35" role="cell" class="">0.4%</td> <td aria-colindex="36" role="cell" class="">10</td> <td aria-colindex="37" role="cell" class="">768</td> <td aria-colindex="38" role="cell" class="">98</td> <td aria-colindex="39" role="cell" class="">8.1%</td> <td aria-colindex="40" role="cell" class="">1</td> <td aria-colindex="41" role="cell" class="">767</td> <td aria-colindex="42" role="cell" class="">0</td> <td aria-colindex="43" role="cell" class="">0.0%</td> <td aria-colindex="44" role="cell" class="">4</td> <td aria-colindex="45" role="cell" class="">759</td> <td aria-colindex="46" role="cell" class="">4</td> <td aria-colindex="47" role="cell" class="">0.3%</td> <td aria-colindex="48" role="cell" class="">0</td> <td aria-colindex="49" role="cell" class="">759</td> <td aria-colindex="50" role="cell" class="">0</td> <td aria-colindex="51" role="cell" class="">0.0%</td> <td aria-colindex="52" role="cell" class="table-info">58</td> <td aria-colindex="53" role="cell" class="table-info">393</td> </tr>

This may work.这可能有效。

  1. Find all tr查找所有
  2. For loop find all td in each tr For 循环查找每个 tr 中的所有 td
  3. If first td's text is 220193, store all tds' text in res如果第一个 td 的文本是 220193,则将所有 td 的文本存储在res
keys = ['220193', '220XYZ']
res = []
for k in keys:
    rows = driver.find_elements(By.CSS_SELECTOR, 'tr')
    for r in rows:
        tds = driver.find_elements(By.CSS_SELECTOR, 'td')
        if tds[0] = k:
            res.append([td.text for td in tds])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Python Selenium-如何单击Web表列的每个行元素? - Python Selenium - How do you click on every row element for column of web table? 无法通过 python selenium 获取表信息 - Unable to obtain table info through python selenium Python Selenium单击表中包含正确数据的特定行 - Python Selenium click on a specific row in a table containing the right data in a column Selenium Python如何从元素表中找到指定的行和列 - Selenium Python how to locate a specified row and a column from a table of elements Python 使用 selenium webdriver 获取元素的 CSS 颜色值 - Python obtain CSS color value of element using selenium webdriver Selenium Python:获取找到的元素行的索引 - Selenium Python : get index of row of element found Selenium - Python 如何在里面一一点击行元素<table><tr>环形 - Selenium - Python How to click row element one by one inside <table><tr> loop 如何使用Python Pandas进行汇总,获取百分比并重新分配列和行? - How to aggregate, obtain percentage, and reassign column and row with Python Pandas? Selenium Python StaleElementReferenceException:消息:元素不再有效。 我的表格未打印所有列值 - Selenium Python StaleElementReferenceException: Message: Element is no longer valid. My table is not printing all the column values 单击 Python Selenium 中特定行的表中的按钮 - Click button in a table on a specific row in Python Selenium
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM