【问题标题】:how to extract links from multiple divs with the same class name with xpath如何使用xpath从具有相同类名的多个div中提取链接
【发布时间】:2020-11-20 12:37:28
【问题描述】:

我正在做一个硒项目。我有一个网页,其中有多个 divs 具有相同的类名,例如这个

<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>
<div class="usr_blk hid">...</div>

每个div里面都是如下内容

<div class="usr_blk hid">
    <div class="image_info">
        <table>
            <tbody>
                <tr>
                    <td>
                        <a href="the link I want to scrape">Link</a>
                    </td>
                </tr>
           </tbody>
        </table>
    </div>
</div>

我想从每个div 中的a tag 中提取link。这是我迄今为止尝试过的

list_xpath = "//div[@class='usr_blk hid']//div[@class='image_info']//a"
list_raw = driver.find_elements_by_xpath(list_xpath)
lst = [link.get_attribute('href') for link in list_raw]

但这会导致一个空列表。我不确定我做错了什么。

提前致谢

由于公司政策,我无法与您分享网站链接。

【问题讨论】:

  • 简化。首先,尝试 find_element_by_css_selector('div.usr_blk.hid')。
  • @JustinEzequiel 我应该试试find_elements_by_css_selector,因为有多个 div
  • @Sashaank 你试过使用WebDriverWait
  • 哦,是的。错过了。
  • @JustinEzequiel 不会 WebDriverWait 只找到具有给定类名的第一个 div 吗?我希望代码找到所有的 div

标签: python selenium xpath href


【解决方案1】:

尝试使用WebDriverWait

.visibility_of_all_elements_located 返回网页元素列表:

wait = WebDriverWait(driver, 20)
list_raw = wait.until(EC.visibility_of_all_elements_located((By.XPATH, 'your_xpath')))

进口:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

【讨论】:

    猜你喜欢
    • 2023-01-17
    • 1970-01-01
    • 2016-10-14
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多