2017-10-18 338 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輸入或輸出文件不在您可能合理期望的目錄中,所以應該嘗試使用絕對路徑作爲參數。