ユーザー名とパスワードが必要なドメインの背後にあるpdfファイルを取得しようとしています。私はMechanicalSoupにログイン資格情報を入力することができますが、pdfファイルにナビゲートすると、MechanicalSoups launch_browser()でpdfを表示できますが、pdfをダウンロードできません。 (認証を必要としませんでしたサイトのためのpython 2にBeautifulSoupを使用して)過去に私はそうのようurllib2のURLを渡します。問題WebサイトでurllibでPDFをダウンロードするには認証が必要です
page = urllib2.urlopen(download_url)
file = open(fileName, 'w')
file.write(page.read())
file.close()
を、私は私が私ことがわかっurllib.requestsと同様に行うとログイン資格情報をもう一度入力する必要があります。
loginUrl = "http://..."
urlToPDF = "http://..."
passman = urllib.request.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, loginUrl, "username", "password")
authhandler = urllib.request.HTTPBasicAuthHandler(passman)
opener = urllib.request.build_opener(authhandler)
urllib.request.install_opener(opener)
page = urllib.request.urlopen(urlToPDF)
file = open("test.pdf", "wb")
file.write(page.read())
file.close()
しかし、これは動作するようには思えません。だから私は(以下の指示をhere)試してみました。ファイル名を "test"( ".pdf"を削除)に変更してクロムで開くと、ログインページにリダイレクトされるボタンをクリックする必要があるというWebページがファイルに書き込まれたように見えます。したがって、私は上記のコードでloginUrlとurlToPDFの両方を使用しようとしました。
私がこれまで読んだフォーラムは、上記がうまくいくと言えるでしょう。あるいは、MechanicalSoupを使ってpdfを見ることができると考えると、MechanicalSoupでpdfを直接ダウンロードする方法はありますか?
あなたの特定のケースについてはわかりませんが、多くのWebサイトでは参照元フィールドを調べて、実際にダウンロードページから来ているかどうかを確認し、それ以外の場合はHTMLページを表示します。そのような場合は、MechanicalSoupが動作するはずです。 –