[英]How can I export an web-scraping table into csv with multiple rows?
我在Python 2.7.13上编写了这段代码,用于从网站上抓取数据表。
import urllib2
from bs4 import BeautifulSoup
import csv
import os
out=open("proba.csv","rb")
data=csv.reader(out)
def make_soup(url):
thepage = urllib2.urlopen(url)
soupdata = BeautifulSoup(thepage, "html.parser")
return soupdata
maindatatable=""
soup = make_soup("https://www.mnb.hu/arfolyamok")
for record in soup.findAll('tr'):
datatable=""
for data in record.findAll('td'):
datatable=datatable+","+data.text
maindatatable = maindatatable + "\n" + datatable[1:]
header = "Penznem,Devizanev,Egyseg,Penznemforintban"
print maindatatable
file = open(os.path.expanduser("proba.csv"),"wb")
utf16_str1 =header.encode('utf16')
utf16_str2 = maindatatable.encode('utf16')
file.write(utf16_str1)
file.write(utf16_str2)
file.close()
我想用接下来的4行将其导出为CSV:
“ Penznem Devaizanev Egyseg Penznemforintban”
数据用“,”分隔,但最后两个值是ONE行。 (283,45)
我该如何解决?
您无法直接避免最后昏迷,但是,
您可以简单地使用另一个分隔符,即;(分号),并在exel中打开文件时,计算选择(;)分号作为分隔符,您将获得预期的结果!
import urllib2 from bs4 import BeautifulSoup import csv import os out=open("proba.csv","rb") data=csv.reader(out) def make_soup(url): thepage = urllib2.urlopen(url) soupdata = BeautifulSoup(thepage, "html.parser") return soupdata maindatatable="" soup = make_soup("https://www.mnb.hu/arfolyamok") for record in soup.findAll('tr'): datatable="" for data in record.findAll('td'): datatable=datatable+";"+data.text maindatatable = maindatatable + "\\n" + datatable[1:] header = "Penznem;Devizanev;Egyseg;Penznemforintban" print maindatatable file = open(os.path.expanduser("proba.csv"),"wb") utf16_str1 =header.encode('utf16') utf16_str2 = maindatatable.encode('utf16') file.write(utf16_str1) file.write(utf16_str2) file.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.