2016-09-08 11 views
0

xlsxファイルをダウンロードしてコンピュータに保存するスクリプトを作成しようとしています。このファイルには特定のパスはなく、GETフォームを入力した後に生成されます。送信ボタンは2つあります。Python - GETフォームを使用してファイルをダウンロードする

最初のものは結果のリストを(私はそれを行うことができます)の形式で作成します。 2番目のファイルはxlsxファイルを作成し、保存先を尋ねます。

<form action="/search" method="get" id="frm-detailedSearchForm"> 

...

<input type="text" name="publication_date[from]" class="date" tabindex="1" id="frm-detailedSearchForm-publication_date-from" data-nette-rules='[{"op":":filled","rules":[{"op":":pattern","msg":"Nevalidní formát data (dd.mm.rrrr)","arg":"\\d{1,2}\\.\\d{1,2}.\\d{4}"}],"control":"publication_date[from]"}]'> 

...

<input type="submit" name="search" class="w-button btn ajax" tabindex="27" value="Search"> 
<input type="submit" name="export" class="w-button btn" tabindex="28" value="Export"> 
<input type="hidden" name="do" value="detailedSearchForm-submit"></form> 

EDIT: ソリューション(LIBを機械使用して)最終的には簡単だった:

url = url + ?do=detailedSearchForm-submit&export=Export 
browser.retrieve(url, file.xlsx) 

ありがとうございます。

+1

これまでに開発したPythonコードを常に表示する必要があります。ここから始めてみてくださいhttp://stackoverflow.com/a/1171409/640916 –

+0

私は多くのタイプのコードを試していますので、どちらが最善のものかを言うのは難しいです。 ブラウザ= mechanize.Browser(工場= mechanize.RobustFactory()) browser.set_handle_robots(偽) browser.open(URL) browser.select_form(NR = 1) browser.form [ "PUBLICATION_DATE []から"] =" 01.09.2016 " browser.form [" publication_date [to] "] =" 01.09.2016 " これは私がbrowser.submit()を使用しているときに動作します。 browser.submit(nr = 1)を使用するようにtryiedしても、何も起こらない。 –

答えて

0

既存のウェブサイトとやりとりし、フォームを埋め、ファイルをダウンロードして保存するスクリプトを作成しようとしているのですか? あなたはウェブサイトを作成しているわけではありません。

です - 私はseleniumを使って、実際のブラウザの上にのフォームを記入する作業を自動化することを強くお勧めします。それは始めるのが少し難しいが、はるかに弾力性がある。

理論的には、フォーム提出を偽るURLからファイルをダウンロードするスクリプトを書くことができますが、この態度はしばしばトラブルの原因となります。サイトがあるレベルの複雑さを超えている場合、この態度がうまくいく可能性は非常に低いです。

+0

まあ、私はウェブサイトを書いているわけではありません。私は日々前にpubslihedされたファイルを毎日ダウンロードする必要があります(publication_date [から]を記入し、ファイルをダウンロードしてコンピュータに保存してください)。 –

+0

@MartinaKarbusická - あなたが私の答えを見つけたら、気軽にそれを受け入れてください/ upvote – akiva

関連する問題