Создание URL-адресов после очистки путей к изображениям - PullRequest
1 голос
/ 05 мая 2011

Я пытаюсь очистить веб-URL, введенный пользователем, а затем вывести массив допустимых неразбитых элементов изображения с абсолютными путями в HTML. Я использую Nokogiri для очистки и хочу узнать, есть ли что-нибудь, что я могу использовать, чтобы легко обрабатывать непредсказуемые URL-адреса, предоставленные пользователями, и пути к изображениям, за исключением того, что не удается понять, как написать что-то с нуля.

Примеры:

http://domain.com/ and /system/images/image.png
=> http://domain.com/system/images/image.png

http://sub.domain.com and images/common/image.png
=> http://sub.domain.com/images/common/image.png

http://domain.com/dir/ and images/image.png
=> http://domain.com/dir/images/image.png

http://domain.com/dir and /images/small/image.png
=> http://domain.com/images/small/image.png

http://domain.com and http://s3.amazon-aws.com/bucket/image.png
=> http://s3.amazon-aws.com/bucket/image.png 

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Вместо загрузки страниц и использования Nokogiri, я бы рекомендовал использовать Mechanize .Он построен поверх Nokogiri, так что все, что вы можете сделать с Nokogiri, вы можете сделать с помощью Mechanize, но он добавляет много полезных функций для скрепления / навигации.Он позаботится об относительной проблеме URL, которую вы описали выше.

require 'rubygems'
require 'mechanize'
url='/4223669/sozdanie-url-adresov-posle-ochistki-putei-k-izobrazheniyam'
Mechanize.new.get(url) {|page| puts page.image_urls.join "\n"}
1 голос
/ 06 мая 2011

Если вы действительно хотите сделать это сами (вместо использования, скажем, Mechanize ), используйте URI::join:

require 'uri'
URI::join("http://domain.com/dir", "/images/small/image.png")
  # => http://domain.com/images/small/image.png

Обратите внимание, что вы должны соблюдать HTML-страницу BASE отметьте, если есть один ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...