2016-01-16 52 views
1

我能夠使用俄羅斯統計網站的以下代碼提取數據並創建CSV文件。但是,我有兩個問題,首先,我不知道爲什麼在兩個非空白行之間總是插入空行。其次,我不知道如何編寫一個不錯的表格,將同一月的數據分佈在不同的列上。現在,一切都在一個單元格中。謝謝。從抓取的HTML數據中寫入CSV

from bs4 import BeautifulSoup 
import lxml 
import urllib2 
import csv 

f=csv.writer(open("Russia.csv","w")) 
mainurl='http://www.gks.ru/bgd/free/B00_25/IssWWW.exe/Stg/d000/I000750R.HTM' 
urlroot='http://www.gks.ru/bgd/free/B00_25/IssWWW.exe/Stg/d000/' 

data = urllib2.urlopen(mainurl).read() 
page = BeautifulSoup(data,'html.parser') 

for link in page.findAll('a'): 
    page = urllib2.urlopen(urlroot+link.get('href')) 
    soup = BeautifulSoup(page, 'lxml') 
    years=soup.findAll('title',text=True) 

    table = soup.find('center').find('table') 
    for row in table.find_all('tr')[3:]: 
     cells = [cell.get_text(strip=True) for cell in row.find_all('td')] 
     f.writerow([cells]) 
+0

什麼是你想要的輸出? – alecxe

+0

@alecxe;我期望的輸出看起來像這樣[在csv中的第1行的示例]:1月; 112,8; 28,2; 1,2 [然後是下一行的下一個項目,以及我列表中的所有項目],所以是一個csv,它在每行的列表中列出每個項目的數據。現在,我的問題是,csv編寫者在每個項目前直接寫入unicode「u」。 –

回答

1

你無意中使名單這裏的列表:

cells = [cell.get_text(strip=True) for cell in row.find_all('td')] 
f.writerow([cells]) 

相反,直接寫了cells列表:

f.writerow(cells)