【发布时间】:2014-08-27 10:57:08
【问题描述】:
我已经使用 open-uri 和 nokogiri 构建了一个网络爬虫 ruby 脚本,我对这一切都很陌生,但它适用于我需要从源中具有完整 URL 的几个网站中提取数据,除了一个使用相对 URL 的。
脚本的作用是打开页面,构建要打开的页面数组,然后遍历并从 css(不是 xpath)中提取数据。
我如何强制脚本在它们是相对的实例中使用完整的 URL,这一直困扰着我一段时间,我似乎无法让它运行
在我的情况下,我认为我需要在它推送 URL 时添加一些内容,有人可以指出我正确的方向吗?将不胜感激!谢谢!
require 'open-uri'
require 'nokogiri'
PAGE_URL = "http://www.OMMITED.co.uk"
page = Nokogiri::HTML(open(PAGE_URL, "User-Agent" => “OMMITED“))
links = page.css("a")
links_array = Array.new
links.each{|link|
url = link['href'].nil? ? 'empty' : link['href']
if url.include? 'category' and !url.include? '/all'
links_array.push url
end
}
【问题讨论】:
-
您可以使用正则表达式来检查完全限定的 URL,例如 /^[\w]*:\/\// - 如果匹配,则添加根 URL。记住在相对 URL 开头的“/”的微妙之处表示它从服务器之后路径的根开始,而不是不带斜杠的相对链接开始,它与当前页面的目录匹配。我会写一个答案,但我需要更多关于可用变量的知识。 (主要是当前全限定URL和当前页面路径。)
-
编辑添加变量!
标签: ruby url nokogiri relative-path open-uri