2014-01-19 59 views
1

問題之間傳送會話:Python的 - 兩個瀏覽器

我已經寫了一噸的代碼(網上自動完成一些非常艱苦的任務),並且使用了機械化庫Python來處理網絡請求。它工作得很好,除了現在我遇到了一個頁面,我需要javascript功能...機械化不處理javascript

建議的解決方案:

我使用PyQt編寫這個程序的GUI,它來包裝的QtWebKit,它不處理javascript。我想使用QtWebKit來評估我卡在頁面上的javascript,最簡單的方法是將網絡會話從機械化轉移到QtWebKit

我不想使用PhantomJSSeleniumQtWebKit來查看我的所有網絡請求;我100%希望爲此保持機械化。我想知道如何將我的登錄會話從機械化轉移到QtWebKit

這工作?

  • 轉自機械化所有的cookie QtWebView
  • 傳輸的所有狀態變量的值(如_VIEWSTATE等),從機械化到QWebView(頁碼是ASP.net頁...)
  • 變化QWebView的用戶代理標頭與機械化相同...

我真的不知道如何讓這兩個「瀏覽器」看起來更像服務器... woul這項工作?謝謝!

回答

0

由於沒有人回答,我會發布我的工作。

基本上,我想將我的會話從Mechanize(python模塊)「轉移」到QtWebKits QWebView(PyQt4模塊),因爲我的項目的絕大多數是自動化無頭的,但是我遇到了一個路障,我沒有但要讓用戶手動將數據輸入到可能的結果頁面中(因爲每次取決於具體情況,表單都是不同的)。

我通過利用QWebViews javascript功能來滿足這個要求,而不是轉移會話,。我的方法是這樣的:

  1. 加載頁面的機械化和下載HTML保存到本地臨時文件
  2. 在QWebView中加載本地文件
  3. 用戶現在可以將所需的數據輸入本頁的本地副本
  4. 找到此頁面上的表單字段,並使用javascript提取用戶輸入的數據。您可以通過獲取頁​​面的主框架對象(QWebView-> Page() - > MainFrame()),然後評估JavaScript代碼以完成上述任務(使用evaluateJavaScript())來完成此操作。
  5. 獲取您從表單字段中提取的數據,並使用它提交表單時您仍然使用機械化打開的連接。

就是這樣!有點解決方法,但它的工作原理是:\