import csv
from email import header
from fileinput import filename
from tokenize import Name
import requests
from bs4 import BeautifulSoup
url = "https://www.azlyrics.com/l/linkinpark.html"
r=requests.get(url)
htmlContent = r.content
soup = BeautifulSoup(htmlContent,"html.parser")
albumList=[]
table = soup.find('div', id="listAlbum")
for row in table.find_all('div', class_="album"):
albumName = {}
albumName['Name'] = row.b.text
albumList.append(albumName)
print(albumName)
noOfAlbum = len(albumList)
print(noOfAlbum)
with open('lpalbumr6.csv','w',encoding='utf8',newline='') as f:
thewriter = csv.writer(f)
header=['Name']
thewriter.writerow(header)
for i in albumList:
thewriter.writerow(albumName)
你好,
我試圖在 azlyrics.com 的藝術家頁面上獲取專輯串列。當我在 csv 中匯出串列時,我得到的匯出串列如下:

print(albumName)完美運行,但匯出的 csv 看起來像上圖。
uj5u.com熱心網友回復:
albumList包含您需要的所有資訊,因此問題僅在于您最后撰寫 csv 的部分。
你有:
for i in albumList:
thewriter.writerow(albumName)
但albumName不是指albumList- 它是您在創建該串列時使用的臨時變數。您需要在回圈中參考回圈變數i。您還需要指定您需要Name每個字典中鍵的值:
for i in albumList:
thewriter.writerow([i['Name']])
[]由于 csvwriter 處理字串的方式,這一切都在額外的內容中(請參閱
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523226.html
