这是我在 Stack Overflow 上的第一篇文章。我一直在浏览和搜索关于 SO 的这个问题的所有可能答案,我想此时我应该问一个问题,因为我已经在这堵墙上好几天了。我目前正在使用 Python 中的 Selenium 进行网络抓取项目。我已经抓取了一个网站,目前正在第二个网站上,我遇到了一个看似棘手的问题。以下代码运行良好,页面https://www.spd.de/standpunkte/上没有错误:
try:
driver.find_element_by_link_text("Familien").click()
except NoSuchElementException:
WebDriverWait(driver, 12).until("Familien").click()
同时,以下代码TypeError: 'str' object is not callable
在页面https://www.spd.de/standpunkte/familie/上引发错误:
try:
driver.find_element_by_link_text("Mehr erfahren").click()
except NoSuchElementException:
WebDriverWait(driver, 12).until("Mehr erfahren").click()
错误发生就行了WebDriverWait(driver, 12).until("Mehr erfahren").click()
。根据我迄今为止的研究,我认为具体问题是这一行中的某些东西被解释为一个str
对象,因此无法调用。在我看来,有两个问题:
我看不出有任何理由让这条线产生错误,而顶部的代码,抓取同一个网站,但在不同的页面上,没有问题。我检查并确保页面上没有被点击的隐藏元素。
我不知道该行中的什么被视为
str
对象。全线?只有一部分?如果有,是哪一部分?加剧这一点的是,我无法真正打破界限以查看有关它的任何信息。两者都print(WebDriverWait(driver, 12).until("Mehr erfahren").click())
最终print(type(WebDriverWait(driver, 12).until("Mehr erfahren").click()))
给出错误。我能够确定该.click()
方法不是问题,因为我尝试将行设置为等于一个变量,然后与该变量进行交互,但这仍然会在与以前相同的行上产生错误;它甚至从未与该.click()
方法达成一致。
有什么方法可以确定该行的哪一部分被解释为str
?或者这根本就是问题所在?
这一直让我发疯,因此将不胜感激!