为了账号安全,请及时绑定邮箱和手机立即绑定

将抓取的数据附加到 JSON 文件

将抓取的数据附加到 JSON 文件

largeQ 2021-09-11 20:40:20
我正在尝试从报废的数据中制作一个 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)
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您需要将变量设为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)


查看完整回答
反对 回复 2021-09-11
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

import json


a = json.loads(jsonStringA)

b = json.loads(jsonStringB)

c = dict(a.items() + b.items())

# or c =  dict(a, **b)


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信