SyntaxError: EOF while scanning triple-quoted string literal within XPath using Selenium and ChromeDriver?

SyntaxError: EOF while scanning triple-quoted string literal within XPath using Selenium and ChromeDriver?

我正在尝试从 OpenSea 配置文件中收集最近的 NFT 交易 activity。由于某种原因,我收到 SyntaxError,我无法弄清楚是什么导致了错误。我已经三次检查了我的所有代码,但不知道错误的来源。任何建议将不胜感激。我在 MacOS 上。

from selenium import webdriver
from selenium.webdriver.common.by import By

PATH = ('/Users/Chris/Desktop/chromedriver')
driver = webdriver.Chrome(PATH)
driver.get("https://opensea.io/GaryVee")
action = driver.find_element(By.CLASS_NAME, 'Blockreact__Block-sc-1xf18x6-0 Flexreact__Flex-sc-1twd32i-0 ''''FlexColumnreact__FlexColumn-sc-1wwz3hp-0 eaQZLu jYqxGr ksFzlZ')

for action in action:
    nft_name = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[2]/div/div/div/div[2]/span[1]/div/div/a').text
    nft_id = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[2]/div/div/div/div[2]/span[2]/a/div').text
    price_eth = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[3]/div/div[1]/div/div[2]/text()').text
    price_usd = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[3]/div/div[2]/span/div/div').text
    sending_user = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[5]/div/a/span').text
    recieving_user = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[''2]/div[1]/button/div/div[6]/div/a/span').text
    status = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[1]/h6')

这是我的错误代码:

  File "/Users/Chris /PycharmProjects/pythonProject/main.py", line 28
        status = action.find_element(By.XPATH, './/*[@id="main"]/div/div/div[3]/div/div[3]/div[2]/div/div[2]/div[''1]/button/div/div[1]/h6')
                                                                                                                                            ^
SyntaxError: EOF while scanning triple-quoted string literal
Process finished with exit code 1

似乎 CLASS_NAME 中的三重引号是不必要的或拼写错误。然而,.

要识别元素,您可以使用以下任一方法 :

  • 使用css_selector:

    action = driver.find_element(By.CSS_SELECTOR, ".Blockreact__Block-sc-1xf18x6-0.Flexreact__Flex-sc-1twd32i-0.FlexColumnreact__FlexColumn-sc-1wwz3hp-0.OpenSeaPagereact__DivContainer-sc-65pnmt-0.dBFmez.jYqxGr.ksFzlZ.iRiGb")
    
  • 使用 xpath:

    action = driver.find_element(By.XPATH, "//*[@class='Blockreact__Block-sc-1xf18x6-0 Flexreact__Flex-sc-1twd32i-0 FlexColumnreact__FlexColumn-sc-1wwz3hp-0 OpenSeaPagereact__DivContainer-sc-65pnmt-0 dBFmez jYqxGr ksFzlZ iRiGb']")
    

问题是您在这一行中有 '''':

action = driver.find_element(By.CLASS_NAME, 'Blockreact__Block-sc-1xf18x6-0 Flexreact__Flex-sc-1twd32i-0 ''''FlexColumnreact__FlexColumn-sc-1wwz3hp-0 eaQZLu jYqxGr ksFzlZ')

这将关闭您的初始字符串文字(以 ' 开头)并开始一个新的字符串文字(以 ''' 开头)。你永远不会关闭第二个字符串文字,所以你的代码的其余部分是一个字符串,并且 Python 抱怨它在你没有关闭字符串的情况下到达了程序的末尾。

我不知道你想用连续的四个撇号做什么,所以我不能告诉你如何解决它,但这就是问题所在。

action = driver.find_element(By.CLASS_NAME, 'Blockreact__Block-sc-1xf18x6-0 Flexreact__Flex-sc-1twd32i-0 ''''FlexColumnreact__FlexColumn-sc-1wwz3hp-0 eaQZLu jYqxGr ksFzlZ')

该行代码包含一个三重引号,它永远不会终止。

三重引号在 Python 中很特殊。