我有一个网站需要登录(身份验证),其中有一个消息页面,我想将所有注释转换为pdfs。最初我只是点击每个评论并在firefox浏览器中选择打印,只是将评论流保存为pdf。问题是有这么多,所以我决定写一个python脚本,但我遇到了问题。这是我的代码:
import mechanize
import pdfkit
import os
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [("User-agent","Firefox")]
sign_in = br.open("www.mysite.com")
br.select_form(nr = 0)
br["username"] = "username"
br["password"] = "password"
logged_in = br.submit()
br.open("comments_page")
all_comment_links = []
# Iterate the links
for link in br.links():
if "comment" in link.url:
all_comment_links.append(link)
for l in all_comment_links:
ret = br.open("comments_page").read()
pdfkit.from_url(l.url, l.text + ".pdf")
# pdfkit.from_string(ret, l.text + ".pdf")
file = open(l.text + ".html", "w")
file.write(ret)
file.close()
# try from file
#for f in glob.glob("*.html"):
# pdfkit.from_file(f, f.replace(".html", ".pdf"))
我正在尝试使用pdfkit lib将每个评论页面转换为pdf,但一直未成功。我尝试过使用网址(pdfkit.from_url
),只是字符串(pdfkit.from_string
),并将html保存到文件(pdfkit.from_file
),但无法弄清楚为什么这不是工作。据我所知,机械化的东西是有效的,因为我的html文件包含我想要的所有正确内容的评论。我已经四处寻找不同的方法,但这就是我想要的东西。
脚本不会抛出任何错误,它只是挂起第一个pdf,就像它无法访问页面/内容一样。我让它运行了一段时间,但只创建了第一个pdf文件,但是当我尝试打开它时,它说它已经损坏了。我使用pdfkit是错误的还是我应该使用其他东西将这些页面转换为pdf?谢谢,任何帮助表示赞赏。在mac os x上运行。
答案 0 :(得分:0)
我最初的猜测是pdfkit没有收到来自mechanize的任何会话信息,所以它试图在没有登录的情况下使用身份验证后的页面。
您可能应首先使用mechanize下载html,然后在本地进行转换。
但是,既然你说你没有从文件中获得结果,你应该尝试交互式python shell并尝试手动将pdfkit应用到本地文件,看看你得到了什么错误。
其他可能是pdfkit输入或输出文件都不在您可能合理期望的目录中,因此应该尝试使用绝对路径作为参数。