我在执行此脚本时遇到问题:
pic_hrefs = [elem.get_attribute('a href') for elem in hrefs]
Traceback (most recent call last):
File "IB.py", line 56, in <module>
kidCudix.like_photo('comfort')
File "IB.py", line 41, in like_photo
pic_hrefs = [elem.get_attribute('a href') for elem in hrefs]
TypeError: 'FirefoxWebElement' object is not iterable
答案 0 :(得分:0)
首先,elem.get_attribute('a href')
是有问题的,因为'a href'
不是有效的属性。相反,您想使用elem.get_attribute('href')
。
但是,这不是您遇到的错误。
错误消息(TypeError: 'FirefoxWebElement' object is not iterable
)表示您的输入可迭代(hrefs
)的类型为FirefoxWebElement
,由于单个{{ 1}}是不可迭代的。您需要在列表理解中使用元素的 list 而不是单个元素。 (列表推导从另一个可迭代的输入创建列表)。您的理解应该类似于:
FirefoxWebElement
示例:
问题很模糊,但是您可能试图在网页上创建链接列表。要获取所有链接的列表,通常的模式是:
hrefs = [elem.get_attribute('href') for elem in elements]
属性,并将它们存储在列表中您可以使用以下代码来做到这一点:
href
请注意,from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://some_url')
elements = driver.find_elements_by_tag_name('a')
hrefs = [elem.get_attribute('href') for elem in elements]
返回了find_elements_by_tag_name('a')
的 list ,我将在随后的列表理解中使用它。另请注意,所使用的方法是WebElement
(复数)。这与find_elements_by_tag_name
(单数)不同,后者只能定位单个元素。