Python 如何迭代URL以编写CSV

Python 如何迭代URL以编写CSV,python,loops,csv,Python,Loops,Csv,我希望通过不同的URL(我在一个名为“cod”的列表中)将web中捕获的信息逐行写入CSV文件(用于导出到Excel) 我试过只使用一个链接,但是如果我想使用列表中的所有元素,我需要迭代,并且遇到了困难 我的代码: import urllib from bs4 import BeautifulSoup import csv urlfixed = "http://www.fatm.com.es/Datos_Equipo.asp?" cod = ["01GR0001","01GR0004","0

我希望通过不同的URL(我在一个名为“cod”的列表中)将web中捕获的信息逐行写入CSV文件(用于导出到Excel)

我试过只使用一个链接,但是如果我想使用列表中的所有元素,我需要迭代,并且遇到了困难

我的代码:

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行。

只需使用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

只需使用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

只需使用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

只需使用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

TypeError:列表索引必须是整数,而不是str.。这意味着什么?抱歉,但问题是我需要从一个“cod”到CSV内新行的所有信息。有了这个,我就有了一个独特的行。还有一个改变,它应该是
out=open('tomate.csv','ab')
,而不是
out=open('tomate.csv','w')
。我试过了它的作用非常感谢@Stormvirux!!这是‘ab’参数。抱歉打扰了。TypeError:列表索引必须是整数,而不是str。这意味着什么?抱歉,但问题是我需要从一个“cod”到CSV内新行的所有信息。有了这个,我就有了一个独特的行。还有一个改变,它应该是
out=open('tomate.csv','ab')
,而不是
out=open('tomate.csv','w')
。我试过了它的作用非常感谢@Stormvirux!!这是‘ab’参数。抱歉打扰了。TypeError:列表索引必须是整数,而不是str。这意味着什么?抱歉,但问题是我需要从一个“cod”到CSV内新行的所有信息。有了这个,我就有了一个独特的行。还有一个改变,它应该是
out=open('tomate.csv','ab')
,而不是
out=open('tomate.csv','w')
。我试过了它的作用非常感谢@Stormvirux!!这是‘ab’参数。抱歉打扰了。TypeError:列表索引必须是整数,而不是str。这意味着什么?抱歉,但问题是我需要从一个“cod”到CSV内新行的所有信息。有了这个,我就有了一个独特的行。还有一个改变,它应该是
out=open('tomate.csv','ab')
,而不是
out=open('tomate.csv','w')
。我试过了它的作用非常感谢@Stormvirux!!这是‘ab’参数。对不起打扰了。