如何将python列表转换为csv表?



我向一个网站发送了一个请求,然后对它进行了解析。有一个列表,但有问题,使其成为一个csv文件表。当我尝试这个:

from bs4 import BeautifulSoup
import requests
import csv

website = requests.get("https://www.tradingview.com/markets/cryptocurrencies/prices-all/")
soup = BeautifulSoup(website.text, 'lxml')
name = soup.find_all('a', class_ ="tv-screener__symbol")
with open('newparser.csv', 'w') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(name)

输出:

"<a class=""tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcbtc/"" target=""_blank"">Bitcoin</a>","<a class=""tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvceth/"" target=""_blank"">Ethereum</a>","<a class=""tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcbnb/"" target=""_blank"">Binance Coin</a>","<a class=""tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcada/"" target=""_blank"">Cardano</a>","<a class=""tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcusdt/"

不打算把所有的东西都贴出来,但是你明白了。

当我改变:

wr.writerow(name) --> wr.writerow(name.text)

输出:

ResultSet对象没有属性'text'。你可能在治疗a的元素,如单个元素列表。什么时候调用了find_all()你想调用find()?

当我创建一个循环时:

for i in name:
wr.writerow(i.text)

创建如下文件:

"B"我,"t","c","o","我,"n"

"E","t","h","E","r","E","u","m"

"B","我,"n","a","n","c","e","、"C"o","我,"n"

"C","a","r","d","a","n","o"

"T","e","T","h","e","r"

"H","E","X"

"X","R","P"

"S","o","l","a","n","a"

"D","o","g","e","c","o","我,"n"

"U","S","D","、"C"o","我,"n"

"P","o","l","k","a","d","o","t"

"T","e","r","r","a"

"U","n","我,"s","w","a","p"

如何解决这个问题?

writerow接受一个列的可迭代对象

字符串是可迭代的,导致每个字符被放入列

如果你想写一个单独的值,那么在值

周围放一个列表
for i in name:
writer.writerow([i.text])

最新更新