Firefox を実行している Linux システムでヘッドレスで Watir Webdriver を使用していますが、Web ページからリンクを抽出する際に速度の問題が発生しています。問題は、複数のフレームが使用されている場合のようです。たとえば、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
どんな助けでも大歓迎です。