У меня есть скрипт, который просматривает несколько веб-страниц, но есть одна маленькая проблема, на которой я застрял.Я пытаюсь добавить автора в список, но мой скрипт извлекает последнего автора со страницы и применяет его к каждому полю автора.Как мне заставить мой сценарий применить каждого автора к соответствующему названию?Вот мой код
from urllib.request import urlopen
from bs4 import BeautifulSoup as soup
import json
base_url = "https://archive.org/details/librivoxaudio?&sort=titleSorter"
data = []
n = 5
for i in range(1, n+1):
response = urlopen(base_url + "&page=" + str(i))
page_html = response.read()
response.close()
#html parsing
page_soup = soup(page_html, "html.parser")
#grabs info for each book
containers = page_soup.findAll("div",{"class":"item-ttl"})
authors = page_soup.findAll("span",{"class":"byv"})
for container in containers:
item = {}
item['type'] = "Public Domain Audiobook"
item['title'] = container.text.lstrip().strip()
for author in authors:
item['author'] = author.text
item['link'] = "https://archive.org/" + container.a["href"]
item['source'] = "LibriVox"
item['base_url'] = "https://librivox.org/"
data.append(item) # add the item to the list
with open("./json/librivoxTest.json", "w") as writeJSON:
json.dump(data, writeJSON, ensure_ascii=False)
Вот пример выходных данных в JSON
{
"type": "Public Domain Audiobook",
"title": "A Book of Old English Ballads",
"author": "Charles Whibley",
"link": "https://archive.org//details/book_old_english_ballads_1007_librivox",
"source": "LibriVox",
"base_url": "https://librivox.org/"
}, {
"type": "Public Domain Audiobook",
"title": "A Book of Scoundrels",
"author": "Charles Whibley",
"link": "https://archive.org//details/scoundrels_1712_librivox",
"source": "LibriVox",
"base_url": "https://librivox.org/"
}
Последний автор подходит для «Книги негодяев», но «Книги древнеанглийскогоУ Баллады должен быть Джордж Уортон Эдвардс в качестве автора.