python - 将循环中的每个抓取的元素保存到 json 文件
问题描述
我正在抓取一个网站。当我抓取一个 URL 时,我将其写入字典。我想要做的是将每个字典写入一个 json 文件。当我执行以下循环时,文件不是保存为列表,而是保存为不可读的结构 {} {}。
df_price_m = {}
with open(r"C:\Users\USER\Desktop\diploma\information.json", 'w', encoding='utf8') as fout:
row = 0
for url in data:
row +=1
driver.get(url)
user_name_xpath = "//h1[@itemprop='name' and @data-shmid='profilePrepName']"
user_name = get_elements(user_name_xpath)
user_about_xpath = "//*[@class='desktop-profile-page__about-text']"
user_about = get_elements(user_about_xpath)
df_info['id'] = url
df_info['user_name'] = user_name[0]
df_info['user_about'] = user_about[0]
json.dump(df_price_m, fout, ensure_ascii=False)
我得到以下json:
{"id": "www.aina.com", user_name: "Aina Nurma", "user_about": "I am a student"}
{"id": "www.aina.ru", user_name: "Aina Nur", "user_about": "I am a teacher"}
解决方案
看起来您缺少一些代码,但我建议将所有数据保存为字典列表,然后在最后转储而不是转储到仅处理一个 url 的文件
推荐阅读
- java - ElasticSearh RestHighLevelClient ,如何添加重试?
- python-3.x - 是否还创建了内置模块的 pyc 文件?
- google-tag-manager - 可以在gtm脚本上方定义dataLayer,然后将数据推送到gtm脚本下方的dataLayer吗?
- r - 按基于条件创建的组汇总列值
- angular - 是否可以从角度的应用程序代码中强制进行硬应用程序更新(Ctrl + F5 浏览器模拟)?
- python - Python:表达式返回不同的响应 a=a+1 vs a+=1
- python-3.x - 漂亮的汤不解析嵌套表数据
- c# - 如何修复循环的结果
- python-3.x - 计算一组数据点的标准差
- c# - 如何在 C# 中全局声明 XDocument 命名空间?