从抓取的HTML数据中写入CSV

时间:2016-01-16 17:45:00

标签: python python-2.7 csv beautifulsoup

我能够使用俄罗斯统计网站的以下代码提取数据并创建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])

1 个答案:

答案 0 :(得分:1)

您无意中在此处列出了列表

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

而是直接编写cells列表:

f.writerow(cells)