2016-05-31 54 views
1

我期待使用Python(2.7工作)形式後:顯示網站在瀏覽器中提交使用Python

  1. 打開一個網站(特別是http://nunuku.caltech.edu/cgi-bin/getcssconedb_release_img.cgi)。
  2. 根據Python腳本在本地計算機上找到的字符串在該頁面上輸入表單數據。
  3. 在瀏覽器中顯示結果頁面。

我最初是在使用機械化,它適用於部件(1)和(2)的正常工作。但是,通過機械化,將得到的頁面的HTML作爲輸出(下面代碼中的content)。然後,我可以將該HTML寫入本地文件並使用webbrowser.open()打開它,但是由於生成的頁面具有javascript,因此無法正確顯示(並且顯示的內容不是或多或少都是查看此頁面的全部內容第一名)。

有沒有辦法做第(3)部分?廉價的技巧將使用webbrowser.open()與最終的URL字符串(和我的本地數據插入),除了一旦按下「提交」按鈕,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變量是根據具體情況從我的文件中提取的值,例如,ra = 03:50:10.71dec = +32:32:29.60。如果您傾向於查看我正在嘗試查看的內容,可以將其插入網站中。

任何和所有的建議表示讚賞!謝謝!

回答

2

正如我所看到的,您對顯示具有值 的頁面不感興趣,而不僅僅是獲取發送請求的數據。 你的想法並不差,但機械化,因爲你看到沒有使用任何實際的瀏覽器實例。機械化是

綱領性網頁瀏覽

而且我猜你正在尋找的東西,如:

Python-Selenium

+0

我看看,謝謝。 – erekalper

+0

這是絕對要走的路。萬分感謝! – erekalper