【问题标题】:How can I locate these elements using python selenium?如何使用 python selenium 定位这些元素?
【发布时间】:2021-08-22 18:24:50
【问题描述】:

我正在尝试通过网络抓取此人的姓名和公司。 这是我尝试过的。

    <div id="viewcontact">
        <table width="100%">
            <tbody><tr>
                <td style="display: inline-block; width: 30%">
                    <div class="formsection_light" style="margin-top:-8px;background:#eaeaea;">
                        <div style="padding-bottom:10px;">
                            <div class="left">
                                <h1>Company Name</h1>
                                    <p class="f16">Person's Name</p>
                            <div class="theme">
                                    Person's Name                           
                            </div>
                        </div>
                        <div class="right" style="margin-top:5px;">

    driver.find_element_by_xpath('//h1[@class="left"]')
    driver.find_element_by_class_name("f16")

输出什么都没有,没有错误只是没有刮掉任何东西

【问题讨论】:

  • 好的,所以.....发生了什么事?这些函数调用是否返回任何内容?是否有任何错误或追溯?您是否使用 Chrome 的开发者工具来获得完整的 XPath?请edit您的问题并创建一个minimal reproducible example,以便我们可以复制您所看到的行为。这包括给我们一个实际的 URL,或者发布足够的 HTML(以文本形式,而不是作为图像)来测试可能的解决方案。请参阅intro tour 中的on topichow to ask
  • 请原谅我的疏忽,这是我第一次访问这个网站。我不确定 Chrome 的开发者工具是什么意思来获取完整的 xpath
  • 请谷歌该术语以了解它们是什么以及如何使用它们。有关如何复制完整 XPath 以及较短 XPath 的说明,请参阅 this answer
  • Matt,我将代码更新为 driver.find_element_by_xpath('/html/body/div[6]/div[3]/div[5]/div[2]/div[2]/ div[3]/div/table/tbody/tr/td[1]/div[1]/div[1]/div[1]/h1') 这是我通过 Chrome 开发人员工具复制时得到的。它输出的代码是
  • 试试print(element.text)

标签: python selenium element


【解决方案1】:

试试这样的:

details = driver.find_elements_by_xpath("//div[@id = 'viewcontact']//tr")
for detail in details:
    name = detail.find_element_by_tag_name("h1").text #Or `.get_attribute("innerText")`
    cpny = detail.find_element_by_tag_name("p").text
    print("{} : {}".format(name,cpny))

【讨论】:

    【解决方案2】:

    获取公司名称:

    wait = WebDriverWait(driver, 50)
    print(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.formsection_light h1"))).text)
    

    获取第一人称:

    print(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.formsection_light p.f16"))).text)
    

    进口:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      相关资源
      最近更新 更多