如何用Selenium和Python获取区域条件表格并保留外部标题?
问题解决:抓取区域条件标题与表格数据并存入DataFrame
错误原因
你遇到的'WebElement' object is not iterable报错,是因为condiciones_regionales是通过find_element()(单数方法)获取的单个WebElement对象,不能直接用于循环遍历。你应该遍历的是用find_elements()(复数方法)得到的区域项元素列表。
完整解决方案代码
from selenium import webdriver from selenium.webdriver.common.by import By import pandas as pd # 初始化浏览器 driver = webdriver.Chrome() driver.get("https://conveniomarco.mercadopublico.cl/alimentos/marketplace/seller/profile/shop/797095-5800279") # 定位"Condiciones Regionales"的父容器 regional_container = driver.find_element(By.CSS_SELECTOR, "div.box-regional-info") # 获取所有区域项(每个项包含一个区域标题+对应表格) region_items = regional_container.find_elements(By.CSS_SELECTOR, "div.item") # 存储所有区域的数据 all_region_data = [] for item in region_items: # 提取区域标题(比如"Region de Coquimbo") region_title = item.find_element(By.CSS_SELECTOR, "h4").text.strip() # 提取当前区域的表格HTML table_element = item.find_element(By.CSS_SELECTOR, "table") table_html = table_element.get_attribute("outerHTML") # 将表格解析为DataFrame table_df = pd.read_html(table_html)[0] # 给当前表格添加区域标题列,保留关联信息 table_df["区域"] = region_title # 添加到总列表 all_region_data.append(table_df) # 合并所有区域的数据为一个大DataFrame final_df = pd.concat(all_region_data, ignore_index=True) # 打印结果 print(final_df) # 关闭浏览器 driver.quit()
代码说明
- 定位修正:用
find_elements()获取所有div.item元素,得到可遍历的列表 - 标题提取:每个区域项里的标题对应
h4标签,直接提取文本即可 - 表格解析:针对每个区域内的表格,提取其HTML后用
pd.read_html()解析为DataFrame - 关联标题:给每个表格的DataFrame新增一列存储区域标题,避免丢失关联信息
- 合并数据:将所有区域的小DataFrame合并为一个完整的数据集
内容的提问来源于stack exchange,提问作者Cristian Avendaño
相关产品推荐
相关产品推荐

