2
Nokogiriでhttp://www.pro-medic.ru/index.php?ht=246&perpage=allを解析しようとしていますが、残念ながらページからすべての項目を取得できません。Nokogiriで大きなHTMLファイルを解析する
私の簡単なテストコードは次のとおりです。
require 'open-uri'
require 'nokogiri'
html = Nokogiri::HTML open('http://www.pro-medic.ru/index.php?ht=246&perpage=all')
p html.css('ul.products-grid-compact li .goods_container').count
それだけで83項目を返しますが、実際の数は、およそ186
私は問題はopen
にすることができると思ったが、それは、その関数が読み込みらしいですHTMLページが正しく表示されます。
誰も同じ問題に直面しましたか?
ステファンありがとうございました!私は、ページサイズについていくつかの制約があるはずです。しかし、 'html.css( 'ul.products-grid-compact li .goods_container')。countは計算に時間がかかりすぎるようになりました。それをスピードアップする方法はありますか?それとも、ページサイズが大きいだけなので、それとは関係がありません。 – Aleksey
クイックチェックは、マークアップが壊れていることを示します。その結果、571の深さのノードツリーが生成され、そのようなツリーは非常に長い時間がかかります。あなたはNokogiriにそれを供給する前にページを消毒する必要があります。私はSafariを使ってページの固定版を保存しましたが、構成を変更することなく要素を数えるのにわずか0.5秒しかかかりませんでした。 – Stefan
Stefanはマークアップを確認する方法を教えていただけますか?自動的にコードから実行する方法はありますか? – Aleksey