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 时,他们的服务器似乎拒绝提供内容。我想,他们正在检查一些标题。您可以添加标题或使用 Mechanize gem:

require 'mechanize'

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

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

于 2013-03-20T04:56:29.340 回答