2016-05-31 11 views
1

を使用してフォームを送信した後、私はPythonの(2.7での作業)を使用しているよ:表示ウェブサイトのPython

  1. オープンサイト(特にhttp://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi)。
  2. Pythonスクリプトがローカルマシン上で検出した文字列に基づいて、そのページにフォームデータを入力します。
  3. 結果のページをブラウザに表示します。

私は当初、(1)と(2)の部品でうまく動作するmechanizeを使用していました。しかし、機械化すると結果のページのHTMLが出力として得られます(下のコードのcontent)。そのHTMLをローカルファイルに書き込んで、webbrowser.open()を使用して開くことができますが、結果のページにはjavascriptが含まれているため、ものが正しく表示されません(表示されないものは、このページを見ている点全体最初の場所)。

パート(3)を行う方法はありますか?安価なやり方は、webbrowser.open()を最終的なURL文字列(および私のローカルデータが挿入されている)と共に使用することです。ただし、「Submit」を押すとURLはまったく変更されません。

関連するコード、そのままで(ローカルマシンと開口部にまでそのようにHTMLを保存含まれます):

#!/usr/bin/env python 

import webbrowser 
import mechanize 

url = 'http://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi' 
br = mechanize.Browser() 
br.open(url) 
br.select_form(nr = 0) 
br['RA'] = ra 
br['Dec'] = dec 
br['Rad'] = '0.1' 
br['IMG'] = ['nun'] # These are for the radio buttons. 
br['DB'] = ['photcat'] 
br['OUT'] = ['csv'] 
br['SHORT'] = ['short'] 
response = br.submit() 
content = response.read() 
with open('results.html', 'w') as f: 
    f.write(content) 
webbrowser.open('results.html') 

(上記では、br[]文はページ上のフォームラベルであり、 radecの変数は、状況に応じてmyファイルから取得した値です(例:ra = 03:50:10.71dec = +32:32:29.60)。私が見たいものを見るためには、

すべてのアドバイスをいただければ幸いです。ありがとう!

答えて

2

ご覧のとおり、送信されたリクエストのデータを取得するだけでなく、 の値を持つページを表示することができます。 あなたの考えは悪くないが、実際のブラウザインスタンスを使用していないので機械化する。 Mechanizeのは

プログラムによるWebブラウジング

であると私はあなたのようなものを探している推測している:

Python-Selenium

+0

私は見てみましょう、ありがとう。 – erekalper

+0

これは絶対に行く方法でした。ありがとう、トン! – erekalper

関連する問題