gpt4 book ai didi

coffeescript - PhantomJS具有多个页面的意外加载行为

转载 作者:行者123 更新时间:2023-12-04 04:37:10 26 4
gpt4 key购买 nike

我有一个脚本(如下),通过3个步骤抓取网站。一次最多设置一页时,它的效果很好。但是,当我一次将其增加到2时,事情开始变得不灵敏。 onFinished触发的时间比我预期的要早,并且页面尚未完全加载。因此,我的脚本其余部分将中断。知道为什么会这样吗?我应该补充一点,我使用的是最新版本(1.5)。

MAX_PAGES = 1
###
changing MAX_PAGES to >1 causes some pages onFinished event to fire before
the page is fully rendered. this is evident by the fact that there are >1 images
for some pages. i havent been able to reproduce using microsoft.com, but on some
pages i was working on the first onLoadFinished seemed to be called before the page
was actually fully loaded based on the look of the rendered images
###

newPage = (id) ->
context = {}
context.id = id
context.step = 0
context.page = require('webpage').create()
context.page.onLoadStarted = ->
context.step++
context.page.onLoadFinished = (status) ->
console.log status
if status is 'success'
context.page.render("#{context.id}_#{context.step}.png")
else
context.page.release()
context.page.open('http://www.microsoft.com')
console.log 'started loading'

newPage id for id in [1..MAX_PAGES]

最佳答案

我认为问题与PhantomJS中的每个网页都使用相同的QNetworkAccessManager有关,因此,当每个网页对象完成加载时,就会触发finished()信号。为了解决此问题,可能需要对PhantomJS的代码进行修改。在尝试在PhantomJS中并行加载多个页面之前,我已经注意到了这一点。我正在使用的应用程序使用QtWebkit并同时加载多个页面,因此我必须确保每个网页都具有自己的QNetworkAccessManager,以便finish()信号不会相互干扰。

关于coffeescript - PhantomJS具有多个页面的意外加载行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com