使用Selenium获取Python中的所有表元素

pieyvz9o  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(197)

我有一个网页,它看起来像这样:

<table class="data" width="100%" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <th>1</th>
            <th>2</th>
            <th>3 by</th>
        </tr>
        <tr>
            <td width="10%"><a href="foo1">5120432</a></td>
            <td width="70%">INTERESTED_SITE1/</td>
            <td width="20%"><a href="foo2">foo2</a></td>
        </tr>
        <tr class="alt">
            <td width="10%"><a href="foo1">5120431</a></td>
            <td width="70%">INTERESTED_SITE2</td>
            <td width="20%"><a href="foo2">foo2</a></td>
        </tr>
    </tbody>
</table>

我想把这两个站点放在某个地方(interested_site1和interested_site2)。我试着这样做:

chrome = webdriver.Chrome(chrome_path)
chrome.get("fooSite")
time.sleep(.5)

alert = chrome.find_element_by_xpath("/div/table/tbody/tr[2]/td[2]").text
print (alert)

但是我找不到第一个站点,如果我不能在for循环中这样做,我不介意分别得到每个链接,我怎么才能找到那个链接呢?

blmhpbnm

blmhpbnm1#

您可以使用XPath表达式通过循环遍历每一行来处理此问题。

XPath expression: html/body/table/tbody/tr[i]/td[2]

通过以下方式获取行数,

totals_rows = chrome.find_elements_by_xpath("html/body/table/tbody/tr")
total_rows_length = len(totals_rows)

for (row in totals_rows):
    count = 1
    site = "html/body/table/tbody/tr["+counter+]+"/td[2]"
    print("site name is:" + chrome.find_element_by_xpath(site).text)
    site += 1

基本上,循环遍历每一行并获取第二列中的值(td[2])。

vlurs2pr

vlurs2pr2#

使用CSS查询会更容易:

driver.find_element_by_css_selector("td:nth-child(2)")

相关问题