Python Selenium:列表无法使用字符串格式化的替代方案咨询
解决Selenium中列表对象无format属性的报错问题
你的问题出在调用顺序搞反了!你现在是先调用find_elements_by_xpath()(这个方法直接返回元素列表),然后试图给列表加.format()方法——但列表根本没有这个属性,难怪会抛出AttributeError。正确的做法是先完成xpath字符串的格式化,再把完整的xpath传给查找方法。
修正后的基础代码
xpath_to_links = input('Enter the xpath to links: ') # 先格式化xpath字符串,再传入find_elements_by_xpath posts = browser.find_elements_by_xpath("//div[@class='{}']".format(xpath_to_links))
更推荐的现代写法(替代废弃API)
注意find_elements_by_xpath已经被Selenium标记为废弃了,现在更推荐使用By类来指定查找策略,代码会更清晰:
from selenium.webdriver.common.by import By xpath_to_links = input('Enter the xpath to links: ') formatted_xpath = "//div[@class='{}']".format(xpath_to_links) posts = browser.find_elements(By.XPATH, formatted_xpath)
无需手动遍历的批量操作方案
如果想对返回的元素列表做批量操作(比如获取所有元素的属性、文本),不需要写繁琐的for循环,用列表推导式就能简洁完成,这也算一种“无需手动遍历每个元素”的写法:
# 示例:批量获取所有帖子元素的href属性 all_links = [post.get_attribute('href') for post in posts] # 示例:批量获取所有帖子的文本内容 all_titles = [post.text for post in posts]
这样既解决了最初的格式化报错问题,又能高效处理列表中的元素~
内容的提问来源于stack exchange,提问作者Karina
相关产品推荐
相关产品推荐

