我的代码问题没有保存在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])
答案 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 :(得分: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'用于追加