执行evaluateJavaScript后的信号发射

时间:2014-08-22 10:39:40

标签: javascript python qt pyside qtwebkit

我正在使用Python中的QWebPage构建一个Web爬虫。我的脚本是使用evaluateJavaScript("this.click()")点击各种链接浏览网站。然后在发出信号loadFinished之后处理所得到的内容。

class Crawler( QWebPage ):
...
def __init__(self, url):
    QWebPage.__init__( self )
    self._url = url
...
def crawl( self ):
    signal.signal( signal.SIGINT, signal.SIG_DFL )
    self.connect( self, SIGNAL( 'loadFinished(bool)' ), self._finished_loading )
...
def _finished_loading( self, result ):
    doc = self.mainFrame().documentElement()
    link = doc.findFirst("a[id='ANYID']")
    link.evaluateJavaScript("this.click()")

这很有效。但是,有一个链接在执行loadFinished后没有发出evaluateJavaScript("this.click()")信号。我已经确认findFirst确实找到了合适的元素。我查看了网站的源代码,似乎链接正在执行一些JavaScript而不从服务器加载新数据。在这种情况下,loadFinished不会被发出吗?或者它应该在执行JavaScript后始终发出?是否还有其他信号可用于捕获我的QWebPage的更改?

0 个答案:

没有答案