Привет, всем питоноводам!
Я хочу конвертировать несколько интернет страниц в один файл формата .doc
При записи:
f = urlopen('URL','r') #в программе на этом месте стоит цикл, страницы с сайта перебираются друг за другом и записываются в s
s=f.read()
c=open('d:/example.doc','a') #считанные из инета страницы должны поочередно записываться в файл example.doc
Фактически происходит следующее: создается файл, в него копируются данные(его размер увеличивается в процессе работы программы), но при открытии отображается только первая из считываемых страниц(после конвертирования некоторых страниц при открытии док-та вылазит еще и сообщение об отсутствующих css).
При этом, когда я сохраняю данные в формате .htm т.е. c=open('d:/example.htm','a'), все работает, т.е. создаётся один файл, в котором сохранены все закачанные и-нет страницы.
Пробовал конвертировать эту .htm книгу в .doc - такой же результат как и в начале.
Некоторые страницы удалось конвертировать создав сначала файл вормата .txt, а потом переведя его в .doc
f=open('d:/example.txt','r')
r=f.read()
h=open('d:/example.doc','a')
h.write(r)
Но такое получается не со всеми страницами и я понимаю, что это не верный путь.
Возможно есть какой-то работающий плагин. Например pywin32. На одном из форумов я нашел такой пример:
import win32com.client
word = win32com.client.Dispatch('Word.Application')
doc = word.Documents.Add('d:/example.html')
doc.SaveAs('d:/example.doc', FileFormat=0)
doc.Close()
word.Quit()
Пробую, пишет ошибку:
( doc = word.Documents.Add('example.html')File “<COMObject <unknown>>”, line 3, in Add pywintypes.com_error: (-2147352567, ‘\xce\xf8\xe8\xe1\xea\xe0.’, (0, u'Microsoft Word', u“\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e Word \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043d \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d.\n\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:\n* \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b ‘'\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c’'.\n* \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439.”, u'C:\\Program Files\\Microsoft Office\\Office12\\1049\\WDMAIN11.CHM', 24631, -2146823137), None)
Пробовал писать по другому:
import sys, time
import threading
import pythoncom
from win32com.client import Dispatch
word = win32com.client.Dispatch('Word.Application')
doc = word.Documents.Add('d:/example.html')
doc.SaveAs('d:/example.doc', FileFormat=0)
doc.Close()
word.Quit()
Тот же результат.
У меня следующее ПО: Ms Win, python2.7, pywin32-214
Уважаемые коллеги, подскажите пожалуйста как решить данный вопрос?