0

編集:元の問題は解決されましたが、コードは実際には何もしません。Chromeでテストされ、パスワードボックスに「hi」が挿入されます。Spynnerでは、ページをロードするだけです。

Spynnerを使用して、学校がオンライン時刻表を提供するために使用しているWebサイトをスクレイプしようとしています。何らかの理由で、常に次のエラーが発生します。

Run Javascript code: jq("[class^=login-text-box]").val("hi")
Javascript console: ReferenceError: Can't find variable: jq

これは、次のコードが原因で発生します。

import spynner

browser = spynner.Browser()
browser.debug_level = 3;
browser.show()
browser.load("http://web.edval.com.au/#publicaccess")
browser.runjs('_jQuery("[class^=login-text-box]").val("hi")')
browser.close()

私も試しました:

import spynner

browser = spynner.Browser()
browser.debug_level = 3;
browser.jslib = 'jq'
browser.show()
browser.load("http://web.edval.com.au/#publicaccess")
browser.runjs('jq("[class^=login-text-box]").val("hi")')
browser.close()

同様に成功の欠如で。JavaScriptコマンドをChromeのJSコンソールに貼り付けると(jQueryを挿入した後)、完全に機能します。

誰か助けてもらえますか?

ありがとう!

4

1 に答える 1

0

ドキュメントにはjQueryが_jQueryとしてロードされると記載されていても、実際には$としてロードされていることを気にしないでください。コードを次のように変更して修正しました。

import spynner

browser = spynner.Browser()
browser.load_jquery(True)
browser.debug_level = 3;
browser.show()
browser.load("http://web.edval.com.au/#publicaccess")
browser.runjs(browser.jslib+'("[class^=login-text-box]").val("hi")')
browser.close()

runjsが実際にbrowser.jslibをチェックするようになったことに注意してください。

于 2012-11-27T09:31:25.737 に答える