bob3r
Сообщений: 67
Оценки: 0
Присоединился: 2011-06-03 02:30:17.840000
|
Помогал Mikro к Python (см. Вопрос про Python,библиотека lxml) и написал скрипт, который собирает все термины с Securitywiki.ru и пытается записать их в файл. Опытные питоноводы, к качеству кода сильно не придиратесь: #coding: utf-8
import lxml.HТМL
filetermin=open("/media/files/Project/python/termin/termin.txt", "a" )
HТМLtree = lxml.HТМL.parse("http://securitywiki.ru/Slovar%27Terminov?v=xqo")
root = HТМLtree.getroot()
for a in root.findall(".//a[@title]"):
if (a.get("href").find("http://securitywiki.ru/Slovar'Terminov") >= 0):
#print a.text + " " + a.get("href")
terminsPageUrl = a.get("href").replace("'", "%27")
terminsPage = lxml.HТМL.parse(terminsPageUrl)
termins = terminsPage.getroot()
for termin in termins.findall(".//tr[@class='userrow']"):
str = ""
for termPart in termin.findall(".//td[@class='usercell']"):
if termPart.text != None:
str = str + termPart.text.strip() + " "
else:
str = str + " "
filetermin.write(str + "\n")
filetermin.close()
В файл не записывается ничего, происходит ошибка перекодировки на самой первой попытке записи. quote:
Traceback (most recent call last): File "./securitywiki.py", line 20, in <module> filetermin.write(str + "\n") UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-24: ordinal not in range(128) Python 2.6.5. Как побороть ошибку? updаtе: разобрался
str = str + "\n"
filetermin.write(str.encode("utf-8"))
|