如何合并两次BeautifulSoup查询,将data2作为data1的第11字段
解决方案
首先确保data1和data2的长度一致(都是25条),之后可以通过配对遍历的方式,将data2中的每个元素作为新字段添加到data1对应的字典中。示例代码如下:
import json from bs4 import BeautifulSoup headers = ({'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}) sapo="https://casa.sapo.pt/comprar-apartamentos/ofertas-recentes/distrito.lisboa/?pn=1" soup = BeautifulSoup(response.text, 'html.parser') # 一次性提取两类数据,无需重复解析页面 data1 = [json.loads(x.string) for x in soup.find_all("script", type="application/ld+json")] data2 = soup.select('div.property') # 移除冗余数据 del data1[:2] # 将data2的元素作为第11个字段加入data1的每条数据中 # 这里用'property_element'作为新字段名,可按需修改 for item, property_div in zip(data1, data2): # 若需要保存标签的HTML字符串,替换为 item['property_html'] = str(property_div) item['property_element'] = property_div
补充说明
zip(data1, data2)会将两个列表的元素一一对应,保证每条房产信息匹配正确的div.property标签。- 如果不需要保存完整的Tag对象,而是需要提取标签内的特定内容(比如属性、文本),可以直接在循环里处理,例如:
item['property_id'] = property_div.get('data-id')。
内容的提问来源于stack exchange,提问作者hoge6b01
相关产品推荐
相关产品推荐

