无法使用Selenium Python找到另一个元素内的元素

时间:2019-07-29 05:06:38

标签: python selenium web-scraping

我需要抓取一个具有以下结构的网站:

<table>
    <tbody>
    <tr>
    <td>
    <p>
        <a href="href1">Text1</a>
        <a href="href2">Text2</a>
        <a href="href3">Text3</a>
        .   .    .
        .   .    .
    </p>
    <p> .  .  . </p>
    # More <p> elements with <a> as childrens
    </td>
    <td> .  .  . </td
    # More <td> elements
    </tr>
    <tr> .  .  . </tr>
    </tbody></table>

我想获取这些<a>元素(文本和href)。我拥有的代码是:

elem = driver.find_element_by_xpath("//table")
elems = elem.find_elements_by_xpath("./p/a")
print(len(elems))
for i in elems:
    print(i.text)
    time.sleep(4)

元素的长度打印0,因此基本上找不到元素。我也单独尝试过./a而不是./p/a,但结果相同。我刚接触硒,请帮忙。

2 个答案:

答案 0 :(得分:0)

尝试使用xpath

获取所有标签元素

//table//tbody//child::p[1]//a

获取特定的标签元素

//table//tbody//child::p[1]//a[1]
//table//tbody//child::p[1]//a[2]
//table//tbody//child::p[1]//a[3]

答案 1 :(得分:0)

您可以使用以下代码找到所有文本:

elements = driver.find_elements_by_xpath("//a[contains(@href,'href')]")
for element in elements:
    print(element.text)