如何使用Python+Selenium爬取div标签title数据?代码无输出求解决
爬取fynd品牌标题的代码修正方案
原代码核心错误点
- 定位方法和参数不匹配:
find_element_by_css_selector方法接收的是CSS选择器语法,但你传入的是XPath表达式,无法正确定位元素 - 单元素/多元素方法用错:你用了返回单个元素的
find_element方法,后续无法对单个元素做循环遍历,需要改用返回元素列表的find_elements方法 - 取值逻辑缺失:
append()方法为空,没有把获取到的标题内容存入列表,最终输出必然是空列表 - 定位规则错误:注释掉的XPath中class属性写法错误,同时动态生成的
data-v-前缀属性不需要加入定位规则,避免页面更新后定位失效 - 页面等待时间过短:2秒等待不足以让品牌列表完全加载,容易出现找不到元素的问题
修正后的可运行代码
from selenium import webdriver from selenium.webdriver.common.by import By import time # 若你使用Selenium 3版本,仍可保留原executable_path写法 driver = webdriver.Chrome() url = "https://www.fynd.com/brands/" driver.get(url) # 延长等待时间确保页面加载完成,也可以替换为显式等待逻辑 time.sleep(5) driver.maximize_window() luxury_brand_names = [] # 用XPath定位所有class为title的div元素 elements = driver.find_elements(By.XPATH, "//div[@class='title']") for a in elements: # 获取元素文本内容存入列表 luxury_brand_names.append(a.text) print(luxury_brand_names) # 用完记得关闭驱动 driver.quit()
补充说明
- 如果你使用的是Selenium 3版本,将
driver = webdriver.Chrome()替换为你原来的带executable_path的写法即可 - 若要提升运行稳定性,可以把固定的
time.sleep替换为Selenium的显式等待逻辑,等待元素加载完成再做定位 - 最终输出的
luxury_brand_names列表就是所有title div标签内的文本内容
内容的提问来源于stack exchange,提问作者Mehul Haria
相关产品推荐
相关产品推荐

