0

Nokogiriを使用してウェブサイトの見出し(ベトナム語)を取得しようとしています:

ここに画像の説明を入力してください

# encoding: utf-8
require 'rubygems'
require 'nokogiri'
require 'open-uri'

page = Nokogiri::HTML(open("http://vnexpress.net"))   
list = page.css("a[class='link-topnews']")
puts list[0].text

しかし、それはエラーを与えています:

undefined method `text' for nil:NilClass (NoMethodError)

奇妙なことは、まったく同じコードで、時々それが機能し、正しい結果をもたらすことです:

Triều Tiên dọa hành động với máy bay B-52 của Mỹ

タイトルを取得しようとしても、同じエラーが発生します。

page = Nokogiri::HTML(open("http://vnexpress.net/"))   
list = page.css("title")
puts list[0].text

なぜそれがそのように振る舞うのですか?私は何を間違えましたか?

4

1 に答える 1

1

nokogiriだけを使用すると、サーバーがコンテンツの提供を拒否しているようです。おそらく、彼らはいくつかのヘッダーをチェックしています。ヘッダーを追加するか、Mechanizegemを使用できます。

require 'mechanize'

agent = Mechanize.new
page = agent.get "http://vnexpress.net"
page.search("a.link-topnews").first.text

=>「TriềuTiêndọahànhđộngvớimáybayB-52củaMỹ」

于 2013-03-20T04:56:29.340 に答える