Ruby - nokogiri, open-uri - 无法解析页面
Ruby - nokogiri, open-uri - Fail to parse page
此代码适用于某些页面,如 klix.ba,但无法弄清楚为什么它不适用于其他页面。
没有错误说明哪里出了问题,什么都没有。
如果放置页面有效,这意味着我可以定位页面并解析它,为什么我无法获取单个元素?
require 'nokogiri'
require 'open-uri'
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::XML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
#puts page - This line work
puts page.xpath('a')
首先,为什么要将其解析为 XML?
考虑到您的页面是 HTML 网站,以下内容应该是正确的:
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
此外,如果您想删除所有链接(a
-标签),方法如下:
page.css('a').each do |element|
puts element
end
如果您想解析网页中的内容,您需要这样做:
require 'nokogiri'
require 'open-uri'
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
#puts page - This line work
puts page.xpath('a')
这里看看Nokogiri文档
我建议的一件事是在您的代码中使用调试器断点(可能在分配 page
之后)。看看 Pry-debugger gem.
所以我会这样做:
require 'nokogiri'
require 'open-uri'
require 'pry' # require the necessary library
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
binding.pry # stop a moment in time in you code (break point)
#puts page - This line work
puts page.xpath('a')
此代码适用于某些页面,如 klix.ba,但无法弄清楚为什么它不适用于其他页面。
没有错误说明哪里出了问题,什么都没有。
如果放置页面有效,这意味着我可以定位页面并解析它,为什么我无法获取单个元素?
require 'nokogiri'
require 'open-uri'
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::XML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
#puts page - This line work
puts page.xpath('a')
首先,为什么要将其解析为 XML? 考虑到您的页面是 HTML 网站,以下内容应该是正确的:
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
此外,如果您想删除所有链接(a
-标签),方法如下:
page.css('a').each do |element|
puts element
end
如果您想解析网页中的内容,您需要这样做:
require 'nokogiri'
require 'open-uri'
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
#puts page - This line work
puts page.xpath('a')
这里看看Nokogiri文档
我建议的一件事是在您的代码中使用调试器断点(可能在分配 page
之后)。看看 Pry-debugger gem.
所以我会这样做:
require 'nokogiri'
require 'open-uri'
require 'pry' # require the necessary library
url = 'http://www.olx.ba/'
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"
page = Nokogiri::HTML(open(url,'User-Agent' => user_agent), nil, "UTF-8")
binding.pry # stop a moment in time in you code (break point)
#puts page - This line work
puts page.xpath('a')