我向網站發送了一個請求,然后對其進行了決議。有一個串列,但在將其設為 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 hljs-string">"tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcbtc/"" target=""_blank"">Bitcoin</a>","<a hljs-string">"tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvceth/"" target=""_blank"">Ethereum</a>","<a hljs-string">"tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcbnb/"" target=""_blank"">Binance Coin</a>","<a hljs-string">"tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcada/"" target=""_blank"">Cardano</a>","<a hljs-string">"tv-screener__symbol"" href=""/markets/cryptocurrencies/prices-cryptoxtvcusdt/"
不打算發布整個事情,但你明白了。
當我改變時:
wr.writerow(name) --> wr.writerow(name.text)
它列印出:
結果集物件沒有屬性“文本”。您可能將元素串列視為單個元素。當您打算呼叫 find() 時,您是否呼叫了 find_all()?
當我做一個回圈時:
for i in name:
wr.writerow(i.text)
它會創建一個這樣的檔案:
“B”、“i”、“t”、“c”、“o”、“i”、“n”
"E","t","h","e","r","e","u","m"
"B","i","n","a","n","c","e","","C","o","i","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","i","n"
"U","S","D"," ","C","o","i","n"
"P","o","l","k","a","d","o","t"
"T","e","r","r","a"
"U","n","i","s","w","a","p"
我該如何解決?
uj5u.com熱心網友回復:
writerow 對列進行迭代。
字串是可迭代的,導致每個字符都被放入列中
如果要寫入單個值,請在該值周圍放置一個串列
for i in name:
writer.writerow([i.text])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314411.html
上一篇:Python-用另一個沒有子元素的根元素替換一個xml檔案的根元素
下一篇:新變數的字符決議
