【发布时间】:2016-06-15 20:24:47
【问题描述】:
我需要从文本文件中读取一系列 URL,然后检索页面并输出链接列表。
只要输入 URL 包含片段标识符 (#),代码就会出现问题。我尝试用%23 转义这些,但这似乎没有帮助。
给出的错误来自 OpenURI,是 404。
#requirements
require 'nokogiri'
require 'open-uri'
#opening each line in input text file
line_num=0
text=File.open('input.txt').read
text.gsub!(/\r\n?/, "\n")
text.each_line do |line|
print "#{line_num += 1} #{line}"
open('output.txt', 'a') { |f|
f.puts "#{line_num} #{line}"
}
uri = URI.parse(URI.encode(line.strip))
page = Nokogiri::HTML(open(uri))
links = page.css("div.product-carousel-container a")
#loop through links if present
e = 0
while e < links.length
open('output.txt', 'a') { |f|
f.puts links[e]["href"]
}
e += 1
end
end
【问题讨论】:
-
您不应发送包含片段的请求。浏览器在发送请求之前会剥离这些内容。
-
请阅读“minimal reproducible example”。当询问您的代码问题时,尤其是与输入数据有关的问题时,我们需要在问题本身中复制问题的最小数据示例。虽然我们经常可以拼凑出一些重现问题的东西,但这样做会浪费我们的时间,如果想象的数据不正确,可能会导致混乱或错误的答案。因此,我们需要您为我们提供它。它可以节省我们的时间并帮助我们帮助您,并帮助其他任何寻找类似解决方案的人确定您的问题是否符合他们的需求。
-
@ 铁皮人表示感谢。第一个问题,所以下一个问题会更好。干杯!
标签: ruby open-uri fragment-identifier