我在运行 Firefox 的 Linux 系统上使用无头的 Watir Webdriver,并且在从网页中提取链接时遇到了一些速度问题。问题似乎出在使用多个帧时。例如,返回 www.cnet.com 上的所有链接需要 10 分钟。
为什么要花这么长时间,我能做些什么来加快速度吗?
例如,这些是我采用的一些典型时间。从“默认框架”中获取所有链接需要大约 8 秒,但从框架中获取这些链接需要 20 秒:
No Frame: 8.304341236
Frame: 20.050233141
Frame: 20.070569295
....
事实上,在这种情况下,没有一个框架实际上包含任何链接。(请参阅我提出的关于跳过某些帧Watir-Webdriver Frame Attributes Not Congurent with Other Sources 的这个问题)
从页面中提取链接的代码如下:
b.links.each do |uri|
# Check the HREF doesn't meet any of the following conditions. We don't want these so we ignore them.
if uri.href != nil and uri.href != "" and uri.href[0,7].downcase != "mailto:" and uri.href[0,11].downcase != "javascript:"
if debug
puts " [x] [" + Process.pid.to_s + "] Discovered (noframe) URL: " + uri.href
end
# Add the discovered HREF to the array
href.push(uri.href)
end
end
用于从帧中提取链接的代码如下:
b.frames.each do |frame|
frame.links.each do |uri|
if uri.href != nil and uri.href != "" and uri.href[0,7].downcase != "mailto:" and uri.href[0,11].downcase != "javascript:"
if debug
puts " [x] [" + Process.pid.to_s + "] Discovered Frame URL: " + uri.href
end
# Add the discovered HREF to the array
href.push(uri.href)
end
end
end
任何帮助,将不胜感激。