0

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

どんな助けでも大歓迎です。

4

1 に答える 1