Вы можете использовать lxml.html.parse()
функцию, которая принимает файловые как объекты, такие как то, что urllib.urlopen()
возвращается. См. lxml documentation on that.
Тогда, как следует @CharlesDuffy, вы можете использовать u'\n'.join()
для конкатенации всех текстовых элементов внутри p
элементов, которые вы выбираете, с новой строкой \n
Кроме того, я хотел бы предложить работать с юникод строк все вместе, пока не нужно печатать или записывать в файл.
import urllib
import lxml.html
page = urllib.urlopen('http://www.toponymic-dictionary.in.ua/index.php?option=com_content&view=section&layout=blog&id=1&Itemid=2')
# use "page" as a file-like object
xmldata = lxml.html.parse(page).getroot()
ptexts = xmldata.xpath('//p[@class="MsoNormal"]//text()')
joined_text = u'\n'.join(ptexts)
print joined_text.encode('cp1251')
Вы можете поделиться своим кодом? какой пакет вы используете? 'Lxml'? –
Вот начало моего кода. import urllib import lxml.html страница1 = urllib.urlopen ('http://www.toponymic-dictionary.in.ua/index.php?option=com_content&view=section&layout=blog&id=1&Itemid=2') страницаWritten = page1 .read() pageReady = pageWritten.decode ('utf-8') xmldata = lxml.html.document_fromstring (pageReady) –