【发布时间】:2017-10-25 21:54:32
【问题描述】:
我正在用 ruby nokogiri 解析一个网站,但是在多次请求之后,这些网站阻止了我,所以我必须在我正在解析的最后一页重试(链接由 @next_link 获取)。
我尝试过使用sleep 方法,但有很多例外。没有任何效果。
例如,我有 150 页要解析,但在第 25 页时我被阻止了。
这个函数在我的页面中循环:
def final_results(range, link)
(range[:start]..range[:finish]).each do |page_number|
begin
if page_number == 1
parse_response(parser('utf-8', 'iso-8859-1'))
elsif page_number == 2
get_next_link(link)
else
get_next_link(@next_link)
end
rescue Exception => e
range = {:start => page_number, :finish => range[:finish]}
final_results(range, link)
end
end
end
该函数获取下一页链接并解析当前页面:
def get_next_link(link)
begin
post((BASE_URL + link), request_with_captcha_solution)
aux = parser('utf-8', 'iso-8859-1')
parse_response(aux)
paginator_table = aux.css('table.fonte11')[1].children[1]
@next_link = paginator_table.children[3].children[-2]['href']
rescue Exception => e
@error_message ="#{$!}"
end
@next_link
end
【问题讨论】:
标签: ruby web-scraping nokogiri