我正在使用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的更改?