Цель - построить простой скрейпер. Конкретнее, имеется задача - используя mechanize зайти на украиноязычный сайт (сайт Верховной Рады, но думаю детали тут не так важны), используя BeautifulSoup вытащить из таблицы текст (только из одного столбца), немного его обработать (убрать HTML тэги и т.п.) и записать его с помощью модуля csv в файл.
Вот мой код:
from BeautifulSoup import BeautifulSoup from mechanize import Browser import csv url = 'http://w1.c1.rada.gov.ua/pls/zweb2/webproc4_1?pf3511=48671' br = Browser() br.open(url) soup = BeautifulSoup(br.response()) div = soup.find('div', attrs={'class':'zp-info'}) content = div.findAll('dd') output = [] for d in content: output.append(d.text.strip().split(',')) outfile = open('test_out.txt', 'w') writer = csv.writer(outfile) writer.writerows(output)
В результате получаю ошибку:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-7: ordinal not in range(128)
print output
Перепробовал уже много всего. Ближе всего к цели пришел сделав следующее:
proper = repr(output).decode('raw_unicode_escape') print proper
Короче записать в текстовый файл кириллицу еще кое-как получается, если без csv напрямую, но достичь изначальной цели так и не выходит.
Очень еще раз заранее спасибо за любые советы и помощь!