如何迭代URL以编写CSV

时间:2014-02-28 17:14:32

标签: python loops csv

我希望通过不同的网址(我将它们列在名为“cod”的列表中)在网络中捕获的信息逐行写入CSV文件(用于导出到Excel)。

我只试过一个链接,但如果我想用List的所有元素来做,我需要迭代,并且遇到困难。

我的代码:

import urllib
from bs4 import BeautifulSoup
import csv
urlfixed = "http://www.fatm.com.es/Datos_Equipo.asp?"


cod = ["01GR0001","01GR0004","03GR0006","02GR0003","01GR0030","01GR0018","04GR0007","03GR0032","01AL0001","02AL0003"]
loong = len(cod)
i = 0

sock = urllib.urlopen(urlfixed + "Cod=" + cod[i])
htmlSource = sock.read()
sock.close()
soup = BeautifulSoup(htmlSource)
form = soup.find("form", {'id': "FORM1"})

valores = [item.get('value') for item in form.find_all('input')]
valores.remove('Imprimir')
valores.remove('Cerrar')
values = valores

out = open('tomate.csv', 'w')
w = csv.writer(out)
w.writerow([s.encode("utf-8") for s in values])
out.close()

所以,一个包含来自一个“cod”的信息,这应该在“tomate.csv”中生成10行。

1 个答案:

答案 0 :(得分:3)

只需使用for循环,迭代器遍历列表cod,然后打开文件进行写入时应该追加它:

urlfixed = "http://www.fatm.com.es/Datos_Equipo.asp?"
cod = ["01GR0001","01GR0004","03GR0006","02GR0003","01GR0030","01GR0018","04GR0007","03GR0032","01AL0001","02AL0003"]
for i in cod:
    sock = urllib.urlopen(urlfixed + "Cod=" + i)
    htmlSource = sock.read()
    sock.close()
    soup = BeautifulSoup(htmlSource)
    form = soup.find("form", {'id': "FORM1"})

    valores = [item.get('value') for item in form.find_all('input')]
    valores.remove('Imprimir')
    valores.remove('Cerrar')
    values = valores

    out = open('tomate.csv', 'ab')
    w = csv.writer(out)
    w.writerow([s.encode("utf-8") for s in values])
    out.close()
#the loop ends here