[英]How to convert and change Json format
我正在嘗試進行網絡抓取,以獲取 url 鏈接並下載它,我被困在 json 格式中。 我想將 format_1 更改為 format_2
format_1= {'result': [{'TITLE': 'title1<br>title2<br>title3',
'URL': 'url1<br>url2<br>url3'}]}
format_2 = {'result': [{'TITLE': 'title1', 'URL': 'url1'},
{'TITLE': 'title2', 'URL': 'url3'},
{'TITLE': 'title3', 'URL': 'url3'}]}
這就是我所做的,我把<br>
拆分出來了。
for every_report in format_1['result']:
titles = every_report['TITLE'].split('<br>')
pdf_titles = ['This is a title: ' + title for title in titles]
for x in range(len(pdf_titles)):
print(pdf_titles[x])
for every_report in format_1['result']:
urls = every_report['URL'].split('<br>')
pdf_urls = ['http://static.sse.com.cn' + url for url in urls]
for x in range(len(pdf_urls)):
print(pdf_urls[x])
這是 output
title1
title2
title3
url1
url2
url3
接下來我應該怎么做才能讓它們變成 format_2
{'result': [{'TITLE': 'title1', 'URL': 'url1'},
{'TITLE': 'title2', 'URL': 'url3'},
{'TITLE': 'title3', 'URL': 'url3'}]}
因為我想從列表中獲取每個URL
,下載它,並用TITLE
命名。 這部分的代碼是這樣的(可能有錯誤,因為我沒有機會嘗試它,因為我一直在編譯我需要的格式)
for every_report in my_format['result']:
pdf_url = 'this is ths url: ' + every_report['URL']
print(pdf_url)
file_name = every_report['TITLE'] + '.pdf'
resource = requests.get(pdf_url, stream = True)
with open(file_name, 'wb') as temp:
for chunk in resource.iter_content(1024):
temp.write(chunk)
print("This is the title: " + file_name + " Download Completed")
結果應該有: 下載文件到項目 Output 供參考
Title1
url1
Title2
url2
Title3
url3
url
應該是一個真實的網站 url,但是它太長了,所以我在這里用url
替換它。
您可以使用它(我使用了列表理解):
def change_json_format(json_format):
return {'result': [
{'TITLE': title, 'URL': url}
for title, url in zip(
json_format['result'][0]['TITLE'].split('<br>'),
json_format['result'][0]['URL'].split('<br>')
)]}
# testing ...
format_1 = {'result': [
{'TITLE': 'title1<br>title2<br>title3',
'URL': 'url1<br>url2<br>url3'}]}
print(change_json_format(format_1))
output:
{'result': [{'TITLE': 'title1', 'URL': 'url1'}, {'TITLE': 'title2', 'URL': 'url2'}, {'TITLE': 'title3', 'URL': 'url3'}]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.