For循环遍历列表中的前两项,然后在Third上有一个Tracback错误

时间:2018-06-04 03:25:14

标签: python for-loop error-handling traceback python-pdfkit

我正在使用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

成功完成前两项并在其上打印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 :(得分:0)

当我运行与你相同的代码时,它会卡在" yahoo"谷歌和其他一些我尝试过的网站。它为我抛出了以下错误。

abstract transaction OfferTrans {
  o Double bidPrice
  --> VehicleListing listing
  --> Member member
}

transaction Offer extends OfferTrans {
}

transaction AmendOffer extends OfferTrans {
  o String oldTransactionID
}

正如您在此处看到的,由于协议似乎是一个错误,这意味着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文档,尝试找出错误来源。

答案 1 :(得分:0)

我还无法找到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')

希望这有帮助。