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