2014-03-02 65 views
5

使用機械化(和Python)我可以去一個網站,登錄,找到一個表單,填寫一些答案,並提交該表單。但是,我不知道如何打開「響應」頁面 - 即提交表單後自動加載的頁面。我在機械化提交表單後如何獲取響應頁面的URL?

這裏的Python代碼:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = "KO" 
br.form["quantityTextbox"] = "10" 
br.form["previewOrderButton"] 

preview = br.submit() 
print preview.read 

與上面的代碼,我可以看到響應頁面會有什麼。但我想實際打開該頁面並與之交互。我怎樣才能做到機械化?謝謝。

編輯:所以我發佈後立即回答我自己的問題。下面的代碼:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = symbol 
br.form["transactionTypeDropDown"] = [order_type] 
br.form["quantityTextbox"] = amount 
br.form["previewOrderButton"] 

no_url = br.submit() 
final = no_url.geturl() 
x = br.open(final) 
print x.read() 

獲得響應頁面(當你提交一個表單,加載網頁)的HTML源代碼,我根本就拿到br.submit的網址()。並且有一個內置的機械化功能geturl()。

+0

我不明白,默認情況下頁面是否保持打開狀態? – Dunno

+2

該頁面保持打開狀態,但我想獲取該頁面的URL並通過機械化訪問其html。通過這樣做,我可以進一步與頁面交互。 – user1822552

+1

在「頁面底部」答案框中添加您的答案。並接受它 – esnadr

回答

0

獲取新頁面的URL並打開它不是必需的。表單提交後,新頁面會自動打開,您可以使用相同的機械化瀏覽器對象開始與其交互。

從你的問題使用的原代碼,如果你想提交表單並保存新的頁面上的所有鏈接的列表:

br.select_form(name="simTrade") 
br.form["symbolTextbox"] = "KO" 
br.form["quantityTextbox"] = "10" 
br.form["previewOrderButton"] 
br.submit() 

# Here we store all links on the new page 
# but we can use br do any necessary processing. 
links = [link for link in br.links()] 

# This will take us back to the original page with the "simTrade" form. 
br.back() 
0

的OP的答案是有點令人費解,並導致了AttributeError 。這對我更好:

br.submit() 
base_url = br.geturl() 
print base_url