Я Никола, новый пользователь Python, не имеющий опыта в программировании.Поэтому мне действительно нужна помощь с проблемой, которая у меня есть.Я написал код для очистки данных с этой веб-страницы:
http://finanzalocale.interno.it/sitophp/showQuadro.php?codice=2080500230&tipo=CO&descr_ente=MODENA&anno=2009&cod_modello=CCOU&sigla=MO&tipo_cert=C&isEuro=0&quadro=02
По сути, цель моего кода - очистить данные из всех таблиц на странице и записать их втекстовый файл.Здесь я вставляю свой код:
#!/usr/bin/env python
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import urllib2, os
def extract(soup):
table = soup.findAll("table")[1]
for row in table.findAll('tr')[1:19]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
table = soup.findAll("table")[2]
for row in table.findAll('tr')[1:21]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
table = soup.findAll("table")[3]
for row in table.findAll('tr')[1:44]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
table = soup.findAll("table")[4]
for row in table.findAll('tr')[1:18]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
table = soup.findAll("table")[5]
for row in table.findAll('tr')[1:]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
table = soup.findAll("table")[6]
for row in table.findAll('tr')[1:]:
col = row.findAll('td')
voce = col[0].string
accertamento = col[1].string
competenza = col[2].string
residui = col[3].string
record = (voce, accertamento, competenza, residui)
print >> outfile, "|".join(record)
outfile = open("modena_quadro02.txt", "w")
br = Browser()
br.set_handle_robots(False)
url = "http://finanzalocale.interno.it/sitophp/showQuadro.php?codice=2080500230&tipo=CO&descr_ente=MODENA&anno=2009&cod_modello=CCOU&sigla=MO&tipo_cert=C&isEuro=0&quadro=02"
page1 = br.open(url)
html1 = page1.read()
soup1 = BeautifulSoup(html1)
extract(soup1)
outfile.close()
Все будет работать нормально, но первый столбец некоторых таблиц на этой странице содержит слова с символами ударения.Когда я запускаю код, я получаю следующее:
Traceback (most recent call last):
File "modena2.py", line 158, in <module>
extract(soup1)
File "modena2.py", line 98, in extract
print >> outfile, "|".join(record)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 32: ordinal not in range(128)
Я знаю, что проблема заключается в кодировании символов с акцентом.Я пытался найти решение для этого, но это действительно выходит за рамки моих знаний.Я хочу заранее поблагодарить всех, кто собирается мне помочь. Я действительно ценю это!И извините, если вопрос слишком простой, но, как я уже сказал, я только начинаю с python и изучаю все сам.
Спасибо!Nicola