我正在尝试使用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
为什么表现如此?我做错了什么?
答案 0 :(得分:1)
当你使用nokogiri时,他们的服务器似乎拒绝提供内容。我想,他们正在检查一些标题。您可以添加标题或使用Mechanize gem:
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ỹ”