当前位置: 首页 > 知识库问答 >
问题:

无法定位元素,无法抓取“评论”

曹铭晨
2023-03-14

我正在从包含javascript(评论)的丝芙兰网站上抓取产品评论,但我无法抓取。这是我的代码:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support.expected_conditions import presence_of_element_located as EC
    import time
    chrome_path = '/media/danish-khan/New Volume/Web_scraping/rgcrawler2/chromedriver'
    driver = webdriver.Chrome(chrome_path)
    
    chrome_options = Options()
    url = 'https://www.sephora.com/product/the-porefessional-face-primer-P264900?skuId=1259068&icid2=products%20grid:p264900:product'
    
    driver.get(url)
    WebDriverWait(driver, 70)
    time.sleep(70)
    review = driver.find_element_by_class_name('css-1jg2pb9 eanm77i0')
    for post in review:
    #try:
    #    element = WebDriverWait(driver, 50).until(
    #        EC.presence_of_element_located((By.XPATH, "//div[@class = 'css-1jg2pb9 eanm77i0']"))
    #    )
    #finally:
    #    driver.quit()
    #
    
       print(review)
    
    
    driver.close()'

输出为:

回溯(最近的最后一次调用):文件"resgt.py",第15行,在审查中=driver.find_element_by_class_name('css-1jg2pb9 eanm77i0')文件"/home/danish-khan/minicon da3/lib/python3.7/site-pack/selenium/webDrive/远程/webdriver.py",第564行,在find_element_by_class_name返回self.find_element(by=By.CLASS_NAME,value=name)文件"/home/danish-khan/mincon da3/lib/python3.7/site-pack/selenium/webdri/远程/webdriver.py",第978行,在find_element'value': value})['value']文件"/home/danish-khan/mincon da3/lib/python3.7/site-pack/selenium/webdri/webdriver.py",第321行,在执行self.error__response(响应)文件"/home/danish-khan/minicon da3/lib/python3.7/没有这样的元素:无法定位元素:{"method":"css selector","selector":". css-1jg2pb9 eanm77i0"}(会话信息:chrome=85.0.4183.102)

共有1个答案

丌官远
2023-03-14

该页面的评论是异步加载的,特别是当该部分滚动到视图中时。您必须滚动到靠近评论位置的元素并等待它出现。只有这样,您才能检索该元素。
我能够使用此代码做到这一点

driver.execute_script("window.scrollTo(0, document.body.scrollHeight/2);")
time.sleep(10)
review = driver.find_element_by_css_selector('.css-1jg2pb9.eanm77i0')
# review = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/main/div/div[2]/div[1]/div/div[5]/div/div[2]/div[1]/div[2]')
print(review)

我把Xpath留在那里,因为这是我第一次使用它时注意到*您可能需要调整时间和滚动高度以使其始终正确

 类似资料:
  • 我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html:

  • 我试图从一个网站获得一些数据,但得到以下错误。它昨晚起作用了,但当我今天重新运行时,它突然无法定位元素。今天,我尝试了几乎我可以,但无法解决它。 工具和语言-Python、Selenium、Chrome、Chromedriver、AWS Cloud 9、EC2 错误消息 我试过下面的东西 增加和减少睡眠时间。增加和减少睡眠时间 提到各种网站仍然无法解决。我是python新手。

  • 嗨,我是一个相当新的硒。可以有人请建议如何定位和元素在iframe asi是得到错误下面。 带有Iframe标记的DOM按钮元素的屏幕截图 以前编写的代码

  • 问题内容: 我正在尝试搜寻房地产网站上的商品。它有一个aspx表单,必须在提交之前填写。 http://www.cbre.us/PropertyListings/Pages/Properties-for- Sale.aspx 我只关心俄勒冈州的多户家庭财产。所以这是我的第一次尝试: 当我运行此脚本时,出现错误“找不到元素“ ForSalePropertyType”。在这里我在做什么错? 问题答案:

  • 这就是我得到的错误

  • 我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。