执行evaluateJavaScrip后的信号发射

2024-09-30 05:23:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python中的QWebPage构建一个网络爬虫。我的脚本是通过使用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之后发出?有没有其他信号我可以用来捕捉我的网页的变化?你知道吗


Tags: selfurlsignal信号init网站链接def

热门问题