【发布时间】:2020-05-30 20:34:47
【问题描述】:
代码将错误的结构json插入文件
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json
urls = {}
urls['Av'] = {'Áa', 'Bb'}
data = {}
for key, value in urls.items():
for x in value:
url = 'https://www.google.pt/search?q=' + key + '%20' + x
driver = webdriver.Chrome()
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
a = soup.find("body")
for child in a.find_all("div", {'class': 'g'}):
h2 = child.find("span", {'class': 'Q8LRLc'})
div = child.find("a", {'class': 'Fx4vi'})
data[key] = []
data[key].append({'h2': h2, 'div': div})
print(data)
with open("data_file.json", "a") as write_file:
json.dump(data, write_file, indent=4)
driver.quit()
【问题讨论】:
-
定义“错误结构”,然后继续定义“良好结构”。然后给我们您想要存储的示例数据以及它当前存储的内容。如果您有任何错误,请在代码块中发布完整的堆栈跟踪。
-
它输出这个: { "Av": [ { "h2": null, "div": null } ] }{ "Av": [ { "h2": null, "div":空}]}
-
请将此作为编辑包含在代码块中的帖子中,而不是作为评论
-
顺便说一句,
with open("data_file.json", "a")要非常小心。这意味着您要追加到文件中,每次都编写一个新版本的data。这将导致在技术上无效的.json文件。您的意思是在for循环结束后拥有这个吗? -
@Alvaro 你还没有更新你的问题而不是评论部分。投票结束此问题,直到添加更多详细信息。