2017-10-18 28 views
0

すべてのコメントをpdfに変換するメッセージページを持つログイン(認証)が必要なウェブサイトがあります。もともと、私はすべてのコメントをクリックし、Firefoxのブラウザでプリントを選択し、コメントストリームをpdfとして保存しています。問題は非常に多いので、私はPythonスクリプトを書くことに決めましたが、私は問題を抱えています。ここに私のコードは次のとおりです。ウェブページを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")) 

私はPDFに各コメントページを変換するpdfkitのlibが使用しようとしていますが、成功していません。私はURL(pdfkit.from_url)、文字列(pdfkit.from_string)を使用して、ファイル(pdfkit.from_file)にhtmlを保存しようとしましたが、なぜこれが動作していないのかわかりません。私の知る限り、機械化の仕組みは、私のhtmlファイルには適切なコンテンツで必要なコメントがすべて含まれているため、機能します。私はさまざまなアプローチを見回してきましたが、これは私が望むところまで達しています。

スクリプトはエラーを投げず、ページ/コンテンツにアクセスできない最初のpdfでハングアップします。私はそれがしばらくの間実行されているが、最初のPDFファイルが作成されますが、私はそれを開くしようとすると、それは壊れていると言います。私は間違ったpdfkitを使用していますか、私はこれらのページをpdfに変換するために何か他のものを使用すべきですか?ありがとう、そしてどんな助けもありがとう。 Mac OS Xで実行しています。

+1

セレンに切り替えることを検討してください。私は最近、このようなことのためにナイトメアが大好きです。 – pguardiario

+0

@pguardiarioはセレンを使って、はるかに良くなった。 –

答えて

0

私の最初の推測では、それがログインせずに認証の背後にあるページを使用しようとしてpdfkitはMechanizeのから任意のセッション情報を受信して​​いないということです。あなたはおそらくMechanizeのと最初のダウンロードのHTMLはその後、それをローカルに変換する必要があり

しかし、ファイルからも結果が得られないと言うので、インタラクティブなpythonシェルを試して、手動でローカルファイルにpdfkitを適用してみてください。

pdfkitの入力ファイルや出力ファイルのいずれかがディレクトリに存在しない可能性があるので、絶対パスをパラメータとして試してください。

関連する問題