【问题标题】:python selenium unable to locate child elementpython selenium 无法定位子元素
【发布时间】:2019-06-22 11:39:01
【问题描述】:

我正在编写一个程序来遍历网页上的元素。我像这样启动浏览器:

self.browser = webdriver.Chrome(executable_path="C:/Users/me/chromedriver.exe")
self.browser.get("https://www.google.com/maps/place/Foster+Street+Coffee/@36.0016436,-78.9018397,19z/data=!4m7!3m6!1s0x89ace473f05b7d39:0x42c63a92682d9ec3!8m2!3d36.0016427!4d-78.9012927!9m1!1b1")  

这会打开网站,我可以在其中找到我感兴趣的元素:

reviews = self.browser.find_elements_by_class_name("section-review-line")  

现在我有一个类名“section-review-line”的元素列表,它似乎可以正确填充。我想遍历这个元素列表并挑选出具有一组逻辑的子元素。要获取我知道作为类名“section-review-review-content”存在的子元素,我试试这个:

for review in reviews:
    content = review.find_element_by_class_name("section-review-review-content")  

这个错误是:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".section-review-review-content"}

【问题讨论】:

  • 能否分享一下该部分的html。
  • 确定,已编辑添加网站

标签: python selenium selenium-webdriver xpath css-selectors


【解决方案1】:

好的,这里是您从每条评论中需要的所有商品信息。

reviews = driver.find_elements_by_class_name("section-review-content")
for review in reviews:
    reviewer = review.find_element_by_class_name("section-review-title").text
    numOfReviews = review.find_element_by_xpath(".//div[@class='section-review-subtitle']//span[contains(.,'reviews')]").text.strip().replace('.','')
    numberOfStarts = review.find_element_by_class_name("section-review-stars").get_attribute('aria-label').strip()
    publishDate = review.find_element_by_class_name("section-review-publish-date").text
    content = review.find_element_by_class_name("section-review-review-content").text

【讨论】:

    【解决方案2】:

    啊,想通了, 使用顶部有一个空元素的奇怪页面,导致它出错。绝大多数元素都没有这个问题,使用 try catch 解决了这个问题:

        reviews = self.browser.find_elements_by_class_name("section-review-line")
        for review in reviews:
            try:
                content = review.find_element_by_class_name("section-review-review-content")
                rtext = content.find_element_by_class_name("section-review-text").text
            except:
                continue
    

    【讨论】:

    • 您不必尝试捕获,请查看我的答案。它包含审查的所有细节。它适用于所有评论
    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多