此代码在本地工作正常,但在Heroku上,由于请求超时,它需要超过30秒:
if @url
@arr = Array.new
begin
doc = Nokogiri::HTML(open(@url))
doc.css(".new-cars-results-box").each do |item|
hash = Hash.new
type = item.at_css(".new-car-name").text
link = "http://uae.yallamotor.com"+item.at_css(".new-car-name")[:href]
@arr << [link,type]
end
rescue
end
end
如何加快速度?
答案 0 :(得分:0)
你可以在任何结果框中查询DOM 2次,只需查询一次所有'.new-car-name',并为每一个无用的哈希创建
试试这个:
if @url
@arr = Array.new
begin
doc = Nokogiri::HTML(open(@url))
url_prefix = 'http://uae.yallamotor.com'
doc.css(".new-cars-results-box > .new-car-name").each do |item|
type = item.text
link = url_prefix + item[:href]
@arr << [link,type]
end
rescue
end
end
也尝试替换此行
doc.css(".new-cars-results-box > .new-car-name").each do |item|
用这个:
doc.css(".new-car-name").each do |item|