Вы хотите добавить что-то в URL перед загрузкой, правильно?Для этого вы можете использовать focus_crawl
.
Anemone.crawl("http://www.website.co.uk", :depth_limit => 1) do |anemone|
anemone.focus_crawl do |page|
page.links.map do |url|
# url will be a URI (probably URI::HTTP) so adjust
# url.query as needed here and then return url from
# the block.
url
end
end
anemone.on_every_page do |page|
puts page.url
end
end
Метод focus_crawl
, предназначенный для фильтрации списка URL:
Укажите блок, который будетвыберите ссылки для перехода на каждой странице.Блок должен возвращать массив объектов URI.
, но вы также можете использовать его как фильтр URL общего назначения.
Например, если вы хотите добавить atm_source=SiteCon&atm_medium=Mycampaign
ко всем ссылкам ваш page.links.map
будет выглядеть примерно так:
page.links.map do |uri|
# Grab the query string, break it into components, throw out
# any existing atm_source or atm_medium components. The to_s
# does nothing if there is a query string but turns a nil into
# an empty string to avoid some conditional logic.
q = uri.query.to_s.split('&').reject { |x| x =~ /^atm_(source|medium)=/ }
# Add the atm_source and atm_medium that you want.
q << 'atm_source=SiteCon' << 'atm_medium=Mycampaign'
# Rebuild the query string
uri.query = q.join('&')
# And return the updated URI from the block
uri
end
Если вы atm_source
или atm_medium
содержат не-URL-символы, безопасные, тогда URI-кодируйте их.