我正在尝试编写一个程序来抓取我最喜欢的播客的网址。我想从后面的数据创建一个本地网站。
我试图创建一个字典,然后我可以用它来写为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'])
答案 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'))