使用Python Selenium爬取99acres房租数据重复获取首条数据求助
问题解决:循环提取房源租金重复获取首个值的修正方法
你的问题出在循环内的XPath使用了绝对路径,每次都会从页面根节点查找匹配元素,因此只会返回第一个房源的租金。要实现基于当前房源卡片的相对查找,只需修改XPath的写法:
修正后的核心代码段
# 提取页面上所有房源的月租金 all_rent_monthly = driver.find_elements(by="class name", value="tupleCardWrap") for element in all_rent_monthly: # 关键:XPath前添加点号,代表从当前element节点(房源卡片)开始查找 price = element.find_element(by="xpath", value=".//*[@id='srp_tuple_price']") print(price.text)
额外优化建议
- 避免使用固定索引的XPath(比如
//*[@id='lf_budget_max_list']/li[33]),网站更新后索引可能失效,建议改用文本匹配,例如//li[text()='40,000'](需根据页面实际文本调整) - 替换
time.sleep()为Selenium显式等待,提升稳定性且节省时间,示例:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待租金上限控件可点击 maxrent_limit_scroller = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "bdf__lf_budMax")) ) maxrent_limit_scroller.click()
内容的提问来源于stack exchange,提问作者Dibyanshu Pandey
相关产品推荐
相关产品推荐

