0

我正在编写一个爬虫,如果它检测到当前页面上的“>”类型按钮,它会遍历页面。代码在 100 次中大约有 1 次失败,出现错误“未捕获的类型错误:无法读取未定义的属性 'innerText'”。为了尝试排除故障,我打开 Chrome 的开发者控制台并手动测试该特定页面上的选择器。它总是返回我所期望的,并且按钮在视觉上就在那里。我很困惑为什么它很少失败,同时失败的页面看起来很正常。任何建议如何隔离问题?

代码:

lastButton = $(".button a").last()[0];
if(lastButton.innerText === ">") {
    next(lastButton.href, "getFriends", id);
}
4

2 回答 2

1

您的爬虫在什么时候运行该选择器?如果页面还没有完全完成渲染,因为 DOM 还没有准备好,或者页面上的代码可能还没有完成页面的构建,那么您的调用$(".button a").last()将返回一个空数组。由于您仍然可以访问该空数组的任何索引,因此当您尝试从中获取第一项时,您将获得undefined,当您尝试取消它时会导致错误.innerText

尝试记录选择器返回的项目数量,看看是否是这种情况。

于 2014-01-30T14:10:22.037 回答
0

发现有问题的代码实际上 100% 的时间都可以正常工作。这个问题在某种程度上与我的爬虫执行不同的抓取功能有关,但没有加载该功能的页面。因此,特殊的间歇性问题在其他地方。感谢所有试图提供帮助的人!

于 2014-01-31T12:04:31.520 回答