2017-10-18 249 views
0

我有一个网站,需要登录(身份验证),有一个消息页面,我想将所有评论转换为PDF格式。最初,我只是点击每一条评论,并选择在Firefox浏览器打印,并将评论流保存为PDF。问题是有这么多,所以我决定写一个Python脚本,但我有问题。这里是我的代码:如何将网页转换为PDF格式,如PDF格式保存为PDF格式打印

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。

+1

考虑切换到硒。这些日子我真的很喜欢这样的事情。 – pguardiario

+0

@pguardiario结束了使用硒,好多了。 –

回答

0

我最初的猜测是,pdfkit不从机械化收到任何会话信息,因此尝试使用后面的认证页面,而不登录。

你或许应该机械化第一下载HTML然后将其转换本地。

但是,既然你说你还没有从文件中获得结果,你应该尝试交互式python shell,并尝试手动将pdfkit应用到本地文件,看看你得到了什么错误。

其他的事情可能是pdfkit输入或输出文件不在您可能合理期望的目录中,所以应该尝试使用绝对路径作为参数。