Присоединение к очищенным данным в файл JSON - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать файл json из списанных данных.Однако, основываясь на моей функции convertToJson (), она продолжает перезаписывать предыдущую запись и не добавляется.Это потому, что я не повторяю это?Например: приведенный ниже файл Json будет просто перезаписывать первую запись каждый раз новыми данными вместо добавления к ним.

[{"Volume": "Volume: \ n6,061,086", "Price":" 41,88 $ "," Имя ":" 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 ]

0 голосов
/ 10 декабря 2018

вам нужно сделать переменные 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)
0 голосов
/ 10 декабря 2018
import json

a = json.loads(jsonStringA)
b = json.loads(jsonStringB)
c = dict(a.items() + b.items())
# or c =  dict(a, **b)
...