Web サイトで Python で Web スクレイピングを試みています (spynner と BeautifulSoup を使用)。ある時点で、次の html クエリによってトリガーされる zip ファイルのダウンロードをテストしたいと思います。
https://mywebsite.com/download?from=2011&to=2012
ブラウザー (chrome) で明示的に使用すると、指定された名前の zip ファイルのダウンロードがトリガーされます。私のヘッドレス ブラウザでは、この動作を再現できませんでした。私はそれを行う正しい方法ではないことを知っていますが、スピナーのようなものを使用しています:
from spynner import Browser
b = Browser()
b.load(webpage,wait_callback=wait_page_load, tries=3)
b.load_jquery(True)
...
output = b.load("https://website.com/download?from=2011&to=2012")
print b.html
>> ...
もちろん機能しません(zipファイルのダウンロードはありません)。最後の print ステートメントは、Java 例外スタックを含むエラー ページが表示されることを示しています。
する方法はありますか
- スピナーロードメカニズムを使用せずにhtmlクエリを適切に呼び出しますか?
- 結果のzipファイルをキャプチャしますか?
- 選んだ名前でダウンロードしますか?
ご協力いただきありがとうございます。
最後に、Chrome で Java デバッガーを使用してテストした結果、ブラウザーで実行すると次の警告が表示されました。
Resource interpreted as Document but transferred with MIME type application/zip "https://mywebsite.com/download?from=2011&to=2012"
編集:
行われた呼び出しは次のとおりであることがわかりました。
https://mywebsite.com/download?from=10%2F18%2F2011&to=10%2F18%2F2012
これはブラウザで使用でき、
https://mywebsite.com/download?from=10/18/2011&to=10/18/2012
%2F
URLエンコーディングがマップされるため、Pythonでは使用できませんでした%252F