如何转换表csv美丽的汤打印

时间:2015-04-17 16:39:42

标签: python csv beautifulsoup

我的代码问题没有保存在csv档案中,创建一个csv但是空白。使用print函数显示结果但不保存在csv中。

import csv
import urllib2
from bs4 import BeautifulSoup
url = "html"  
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
for tr in soup.find_all('tr')[2:]:
    tds = tr.find_all('h2') 
    td2 = tr.find_all('th')
    hora = tds[0].text.encode('utf-8')
    nombre = td2[0].text.encode('utf-8')
    print hora, nombre
    f = csv.writer(open("prueba.csv", "w"))
    f.writerow(["Hora", "Nombre"])
    f.writerow([hora, nombre])

2 个答案:

答案 0 :(得分:0)

1. import csv
2. import urllib2
3. from bs4 import BeautifulSoup
4. url = "html"  
5. page = urllib2.urlopen(url).read()
6. soup = BeautifulSoup(page)
7. for tr in soup.find_all('tr')[2:]:
8.     tds = tr.find_all('h2') 
9.     td2 = tr.find_all('th')
10.    hora = tds[0].text.encode('utf-8')
11.    nombre = td2[0].text.encode('utf-8')
12.    print hora, nombre
13.    f = csv.writer(open("prueba.csv", "w"))
14.    f.writerow(["Hora", "Nombre"])
15.    f.writerow([hora, nombre])

一些建议。

  1. 在第4行,我希望你把“html”只用于演示,因为你需要一个网址
  2. 尝试将第13行放在第7行之前,以防止多个文件访问,这可能会导致错误。
  3. 如果您可以提供您正在使用的网址,我会尝试并提供更好的解决方案。

答案 1 :(得分:0)

我得到的csv文件是:

  

的Hora,农布雷

     

“Alaska y Segura”,23:50

     

23:15

原因是每次要写入时都以w模式打开文件。 w模式替换文件的内容(如果已存在) - 它会截断文件,不会附加到文件中。要追加您,请改为使用a

f = csv.writer(open("prueba.csv", "a"))

另一个选项,更好,因为无需关闭文件并一次又一次地重新打开,只打开文件一次:

import csv
import urllib2
from bs4 import BeautifulSoup
url = r"http://laguiatv.abc.es/programacion/tve-1-807.html"  
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
f = csv.writer(open("prueba.csv", "w"))
for tr in soup.find_all('tr')[2:]:
    tds = tr.find_all('h2') 
    td2 = tr.find_all('th')
    hora = tds[0].text.encode('utf-8')
    nombre = td2[0].text.encode('utf-8')
    print hora, nombre
    f.writerow(["Hora", "Nombre"])
    f.writerow([hora, nombre])

open功能见documentation

  

'w'用于写入(如果文件已存在则截断文件)和'a'用于追加