Python中如何将BeautifulSoup查询结果全部存入键为'https'的字典?
问题原因
- 字典初始化位置错误:你将
info = {}写在了for循环内部,每次循环都会生成一个新的空字典,之前存储的内容会被直接清空,仅保留最后一次循环的赋值结果。 - 字典键唯一性限制:Python字典的键是唯一不可重复的,你反复给同一个键
"https"赋值,新值会直接覆盖旧值,因此最终字典中永远只会保留1个键值对。 - 变量命名不规范:循环变量和原结果集变量都用了
soup命名,会覆盖原结果集,容易引发隐蔽的逻辑错误。
解决方案
你可以根据自己的使用场景选择对应方案:
场景1:所有结果存在同一个字典的https字段下
如果你需要将所有匹配到的文本统一存在"https"对应的字段中,将该字段的值设置为列表即可,示例代码如下:
info = {"https": []} # 重命名结果集变量,避免和循环变量冲突 soup_items = BeautifulSoup(request.content, "lxml").find_all("td", class_="new") for item in soup_items: info["https"].append(item.text) # 查看爬取到的总结果数 print(len(info["https"]))
场景2:每条结果单独对应一个字典
如果你需要每条结果都对应一个键为"https"的字典,可以将所有字典存入列表中,示例代码如下:
info_list = [] soup_items = BeautifulSoup(request.content, "lxml").find_all("td", class_="new") for item in soup_items: info_list.append({"https": item.text}) # 查看爬取到的总结果数 print(len(info_list))
内容的提问来源于stack exchange,提问作者xiqi1949
相关产品推荐
相关产品推荐

