繁体   English   中英

如何将网络抓取表导出到具有多行的csv中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM