python - 将抓取的数据附加到 JSON 文件
问题描述
我正在尝试从抓取的数据中制作一个 json 文件。但是,基于我的函数 converToJson() 它会一直覆盖上一个条目而不是附加。是因为我没有迭代它吗?例如:下面的 Json 文件每次都会用新数据覆盖第一个条目,而不是附加到它。
[{"Volume": "Volume:\n6,061,086", "Price": "$ 41.88", "Name": "Suncor Energy Inc."}]
def getStockDetails(url, browser):
print(url)
browser.get(url)
quote_wrapper = browser.find_element_by_css_selector('div.quote-wrapper')
quote_name = quote_wrapper.find_element_by_class_name(
"quote-name").find_element_by_tag_name('h2').text
quote_price = quote_wrapper.find_element_by_class_name("quote-price").text
quote_volume = quote_wrapper.find_element_by_class_name(
"quote-volume").text
print("\n")
print("Quote Name: " + quote_name)
print("Quote Price: " + quote_price)
print("Quote Volume: " + quote_volume)
print("\n")
convertToJson(quote_name,quote_price,quote_volume)
def convertToJson(quote_name,quote_price,quote_volume):
quotesArr = []
quoteObject = {
"Name": quote_name,
"Price": quote_price,
"Volume": quote_volume
}
quotesArr.append(quoteObject)
with open('trendingQuoteData.json', 'w') as outfile:
json.dump(quotesArr, outfile)
解决方案
您需要使变量成为quotesArr
全局变量,将其放在函数之外并在完成后编写您的 json。
quotesArr = []
def convertToJson(quote_name,quote_price,quote_volume):
quoteObject = {
"Name": quote_name,
"Price": quote_price,
"Volume": quote_volume
}
quotesArr.append(quoteObject)
def trendingBot(url, browser):
browser.get(url)
trending = getTrendingQuotes(browser)
for trend in trending:
getStockDetails(trend, browser)
# requests finished, write json to file
with open('trendingQuoteData.json', 'w') as outfile:
json.dump(quotesArr, outfile)
推荐阅读
- r - 使用“安全”包装 stepAIC 函数
- java - 是否可以使用原始数据的 SHA256 哈希验证 SHA256withRSA 签名?
- .net-core - .Net Core 3.1 - Swashbuckler - 如何在 AddSwaggerGen 中使用 appsettings
- r - Ubuntu 上的多个 R 版本,带有 CRAN 二进制文件
- uwp - 如何更改 UWP 应用不同页面的列宽?
- node.js - 谷歌云函数 NPM
- sql - 尝试从不同的表中添加数量
- javascript - map 函数不适用于 useEffect 中的 API 数据 - React Hooks
- python - 对数色标不在以 10 为底
- pgp - OpenPGP.js - 出现错误:“错误解密消息:会话密钥解密失败。”