8

私はRuby を使用して簡単な Web クロールを行っていますopen-urinokogiri完全に読み込まれる前に html が読み込まれることがあるという問題が 1 つあります。このような場合、読み込みアイコンとナビゲーション バー以外のコンテンツを取得できません。open-uriページが完全にロードされるまでどのように通知またはnokogiri待機するのが最善ですか?

現在、私のスクリプトは次のようになっています。

require 'nokogiri'
require 'open-uri'

url = "https://www.the-page-i-wanna-crawl.com"
doc = Nokogiri::HTML(open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)) 
puts doc.at_css("h2").text
4

1 に答える 1

13

あなたが説明することは不可能です。の結果は、完全な値が返されたメソッドの後にopenのみ渡されます。HTMLopen

コメントで提案されているように、ページ自体が AJAX を使用してコンテンツをロードしていると思われます。この場合、Watir を使用してブラウザを使用してページを取得できます。

require 'nokogiri'
require 'watir'

browser = Watir::Browser.new
browser.goto 'https://www.the-page-i-wanna-crawl.com'

doc = Nokogiri::HTML.parse(browser.html)

ただし、これによりブラウザ ウィンドウが開く場合があります。

于 2012-12-09T22:29:12.797 に答える