0

编辑:虽然解决了原始问题,但代码实际上并没有做任何事情。在 Chrome 中测试,它会在密码框中插入“hi”。在 Spynner 中,它只是加载页面。

我正在尝试使用 Spynner 来抓取我学校用来提供在线时间表的网站。出于某种原因,我总是收到以下错误:

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 回答