【发布时间】:2018-08-09 04:45:35
【问题描述】:
我一直在尝试解决这个问题。但对于 Python 和 BS,我还没有走多远。代码如下:
import urllib2
import csv
from bs4 import BeautifulSoup
urls = ["https://coinmarketcap.com/currencies/bitcoin/historical-data/",
"https://coinmarketcap.com/currencies/ethereum/historical-data/",
"https://coinmarketcap.com/currencies/ripple/historical-data",
"https://coinmarketcap.com/currencies/bitcoin-cash/historical-data",
"https://coinmarketcap.com/currencies/litecoin/historical-data"]
for url in urls:
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
row = soup.find("tr", attrs={"class":"text-right"})
row2 = row.find_all("td")
print (row2[0].text, row2[1].text, row2[2].text, row2[3].text, row2[4].text, row2[5].text)
Print Output:
(u'Aug 08, 2018', u'6746.85', u'6746.85', u'6226.22', u'6305.80', u'5,064,430,000')
(u'Aug 08, 2018', u'379.89', u'380.67', u'353.73', u'356.61', u'2,016,080,000')
(u'Aug 08, 2018', u'0.380875', u'0.380875', u'0.326996', u'0.331944', u'360,857,000')
(u'Aug 08, 2018', u'660.05', u'660.05', u'575.64', u'585.45', u'450,595,000')
(u'Aug 08, 2018', u'68.16', u'68.16', u'62.14', u'62.49', u'313,187,000')
上面的“打印输出”是我希望 csv 输出的外观。但是当我为 csv 编写器添加代码时,我只能从数组中获取最后一行数据:
with open("hello world.csv",'wb') as f:
wr = csv.writer(f)
wr.writerows([(row2[0].text, row2[1].text, row2[2].text, row2[3].text, row2[4].text, row2[5].text)])
writerows Output:
(u'Aug 08, 2018', u'68.16', u'68.16', u'62.14', u'62.49', u'313,187,000')
非常感谢任何使 csv 输出与打印相同的帮助!
非常感谢,
OM
【问题讨论】:
标签: python csv beautifulsoup urllib2