Цикл for проходит первые 2 элемента в списке, а затем возвращает Tracback - PullRequest
0 голосов
/ 04 июня 2018

Я использую цикл for, чтобы пройти вниз по списку и создать переменные для модуля pdfkit, и он отлично работает для первых двух элементов в списке, а затем имеет ошибку в третьем.Это мой код:

import pdfkit
import time


link1 = "https://www."
link2 = ".com"
pdf = ".pdf"
for line in open('links.txt'):
  print(line.strip("\n\r"))
  newlink = link1 + line.strip("\n\r") + link2
  print(newlink)
  newpdf = line.strip("\n\r") + pdf
  print(newpdf)
  pdfkit.from_url(newlink, newpdf)
print('Finished')

И его извлечение из этого списка:

bing
yahoo
google

Он успешно завершает первые 2 пункта и печатает на них PDF, затем я получаю сообщение об ошибке, которое говорит:,

Traceback (most recent call last): File new.py, line 14 in module pdfkit.from_url(newlink, newpdf)

File "/usr/local/lib/python2.7/dist-packages/pdfkit/api.py", line 26 in from_return r.to_pdf(output_path)

File "/usr/local/lib/python2.7/dist-packages/pdfkit/pdfkit.py," line 156, in traise IOError('wkhtmltopdf reported an error:\n' + stderr)

IOError:wkhtmltopdf reported an error:

Кто-нибудь знает, почему я получаю эту ошибку и как ее исправить?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Мне пока не удалось найти исправление сетевой ошибки на wkhtml.Но вместо этого я нашел альтернативный работающий плагин, который называется weasyprint.

Вот альтернативная версия вашего кода с реализованной weasyprint.

from weasyprint import HTML

link1 = "https://www."
link2 = ".com"
pdf = ".pdf"
for line in open('links.txt'):
  print(line.strip("\n\r"))
  newlink = link1 + line.strip("\n\r") + link2
  print("newlink "+newlink)
  newpdf = line.strip("\n\r") + pdf
  print(newpdf)
  HTML(newlink).write_pdf(newpdf)
print('Finished')

Надеемсяэто помогает.

0 голосов
/ 04 июня 2018

Когда я запускал тот же код, что и вы, он завис на "Yahoo", тогда как Google и несколько других сайтов, которые я пробовал, работали.Он выдал мне следующую ошибку:

raise IOError("wkhtmltopdf exited with non-zero code {0}. error:\n{1}".format(exit_code, stderr))
OSError: wkhtmltopdf exited with non-zero code 1. error:
Loading pages (1/6)
QFont::setPixelSize: Pixel size <= 0 (0)
QFont::setPixelSize: Pixel size <= 0 (0)
libpng warning: iCCP: known incorrect sRGB profile
Counting pages (2/6)                                               
QFont::setPixelSize: Pixel size <= 0 (0)
QFont::setPixelSize: Pixel size <= 0 (0)
Resolving links (4/6)                                                       
Loading headers and footers (5/6)                                           
Printing pages (6/6)
Done                                                                      
Exit with code 1 due to network error: ProtocolFailure

Как вы можете видеть здесь, это, похоже, ошибка из-за протокола, который подразумевает, что wkhtml не может загрузить страницу по какой-то причине.Я думаю, что ошибка, которую вы, должно быть, получили, должна быть из аналогичного источника.Поэтому, если выбор сайтов был просто произвольным, то выбирайте сайты, которые работают.

Если нет, скажите, и я углублюсь в wkhtml документацию, чтобы попытаться выяснить источник ошибки.

...