为字典分配多个值以写为json数据?

时间:2017-12-13 00:40:49

标签: python json dictionary beautifulsoup

我正在尝试编写一个程序来抓取我最喜欢的播客的网址。我想从后面的数据创建一个本地网站。

我试图创建一个字典,然后我可以用它来写为json文件,然后使用javascript访问该数据。

我希望字典看起来像:

def findLinks(url):
    filename = url[-16:-4] + ".json"
    response = requests.get(url).content
    soup = BeautifulSoup(response, parseOnlyThese=SoupStrainer('a'))

    for link in soup:
        if link.has_key('href'):
            links[link.attrMap['href']] = link.getText() #Dictionary

    writeToJSON(filename, links)

但是我在分配值时遇到了问题。到目前为止我所拥有的:

num_units=96
batch_size=120
sequence_length=10
input_classes=9
output_classes=2
dropout_rate=0.6

model.add(LSTM(num_units, stateful=False, batch_input_shape=(batch_size, sequence_length, input_classes)))
model.add(Dropout(dropout_rate))
model.add(Dense(output_classes, activation='softmax'))
model.compile(loss='binary_crossentropy',optimizer=optimizers.Adam(),metrics=['accuracy'])

2 个答案:

答案 0 :(得分:0)

像这样创建字典:

    if link.has_attr('href'):
        links = {'url': link.get('href'), 'text': link.get_text()}

但是,如果在循环中执行此操作,links中的值将在每个链接被处理时被替换,并且您最终只会将一个字典保存到文件中。因此,您应该使用字典列表。随时将每个字典附加到列表中:

links = []
for link in soup:
    if link.has_attr('href'):
        links.append({'url': link['href'], 'text': link.get_text()})

或使用列表理解:

links = [{'url': link['href'], 'text': link.get_text()} for link in soup if link.has_attr('href')]

最后,将其写入JSON格式的文件:

writeToJSON(filename, links)

答案 1 :(得分:0)

def findLinks(url):
    temp_list = []
    filename = url[-16:-4] + ".json"
    response = requests.get(url).content
    soup = BeautifulSoup(response, parseOnlyThese=SoupStrainer('a'))

    for link in soup:
        if link.has_key('href'):
          result_dict = {'url': link['href'], 'text': link.get_text()}
          temp_list.append(result_dict)

    json.dump(temp_list,open(filename,'w'))