Python 无法定位元素,可以';t刮';审查';
我正在从包含javascript(评论)的sephora网站上抓取产品评论,但我无法抓取。这是我的代码:Python 无法定位元素,可以';t刮';审查';,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我正在从包含javascript(评论)的sephora网站上抓取产品评论,但我无法抓取。这是我的代码: from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.expected
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行,在
review=驱动程序。通过类名称(“css-1jg2pb9 eanm77i0”)查找元素
文件“/home/danish khan/miniconda3/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,第564行,按类名称查找元素
返回self.find_元素(by=by.CLASS_NAME,value=NAME)
文件“/home/danish khan/miniconda3/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,第978行,在find_元素中
'value':value})['value']
文件“/home/danish khan/miniconda3/lib/python3.7/site packages/selenium/webdriver/remote/webdriver.py”,第321行,在execute中
self.error\u handler.check\u响应(响应)
文件“/home/danish khan/miniconda3/lib/python3.7/site packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“css选择器”,“选择器”:.css-1jg2pb9 eanm77i0”}
(会话信息:chrome=85.0.4183.102)
该页面的评论是异步加载的,特别是当该部分滚动到视图中时。您必须滚动到评论所在位置附近的元素,并等待它出现。只有这样,您才能检索元素
我可以用这个代码做这件事
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放在那里,因为这是我第一次使用它时得到的
注意*您可能需要调整计时和滚动高度以使其始终正确您首先查找CSS类,然后等待它出现。试着颠倒顺序,看看是否有效。