【问题标题】:Unexpected token error for .send_keys in selenium web scrapingselenium web 抓取中 .send_keys 的意外令牌错误
【发布时间】:2020-04-11 17:30:02
【问题描述】:

我对python比较陌生,所以请原谅任何菜鸟错误的情况...... 我一直在按照教程构建一个 instagram 网络抓取机器人,但我似乎无法解决这个特定的错误。它发生在.send_keys(username).send_keys(password) 中的命令.send_keys 上。我得到的错误是:unexpected token 'send_keys'Python(parser-16)

这也会给下面的self 带来一个问题,它会收到警告:Undefined variable: 'self'Python(undefined-variable)。当我注释掉令牌错误时,此问题自行解决。

我不知道这是由于缩进还是什么,但我完全按照教程进行操作,而且他的作品无缝

from selenium import webdriver
from time import sleep

class InstaBot:
    def __init__(self, username, password):
        self.driver = webdriver.Chrome()
        self.driver.get("https://instagram.com")
        sleep(2)
        self.driver.find_element_by_xpath("//input[@name=\"username\"]")
            .send_keys(username)
        self.driver.find_element_by_xpath("//input[@name=\"password\"]")
            .send_keys(password)


InstaBot('nomadsvalley', '*******')

如果有人可以提供帮助,那就太好了。 谢谢

【问题讨论】:

  • 我已经尝试过了,它对我有用。如果您在浏览器关闭前的最后一条命令后添加 sleep(X),则表明用户和密码正确写入
  • @pcampana 在哪个命令之后,具体来说?它似乎没有对错误进行任何更改。
  • 我只是说我无法重现该错误。在InstaBot('nomadsvalley', '*******')之后添加sleep(10),你会看到用户名和密码是否填写正确
  • @pcampana 别担心,我想通了。 find_element 命令的末尾没有 \。感谢您的帮助。

标签: python selenium selenium-webdriver web-scraping selenium-chromedriver


【解决方案1】:

请参考工作解决方案:

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

class bot:

    def __init__(self):
        self.driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")

    def intagramLogin(self):
        driver = self.driver
        self.driver.get("https://instagram.com")

        WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.NAME, "username"))).send_keys("username")
        WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.NAME, "password"))).send_keys("username")
        WebDriverWait(self.driver, 30).until(
            EC.element_to_be_clickable((By.XPATH, "//*[contains(text(), 'Log In')]"))).click()

        driver.close()

if __name__ == "__main__":
    bot = bot()
    bot.intagramLogin()

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2015-11-19
    • 2018-08-27
    • 2014-12-07
    • 2016-08-10
    • 2013-02-11
    相关资源
    最近更新 更多