如何通过父div筛选元素,保留a标签并提取其href属性?
问题分析与解决方案
原代码的核心问题是提前调用了decompose()方法移除父元素,导致后续无法从已被删除的节点中查找并提取a标签的href属性。
修正后的代码
for images_url_parent in sub_doc.find_all(class_=['woocommerce-product-gallery__image flex-active-slide', 'woocommerce-product-gallery__image']): # 先从父元素里提取所有a标签的href属性 a_tags = images_url_parent.find_all('a') for a in a_tags: href = a.get('href') print(href) # 可根据需求将href存入列表或做其他处理 # 确认提取完成后,再移除父元素(如果业务逻辑需要的话) images_url_parent.decompose()
关键说明
- 调整操作顺序:先提取目标数据,再执行移除操作,避免节点被删除后无法访问子元素
- 不需要嵌套循环遍历父元素,直接用
find_all('a')就能定位到目标标签,再通过get('href')获取属性值 - 如果不需要保留这些父div节点,再执行
decompose();若不需要移除,直接删掉该行即可
内容的提问来源于stack exchange,提问作者stefan
相关产品推荐
相关产品推荐

