Nokogiri найти только входящие ссылки - PullRequest
0 голосов
/ 26 мая 2010

У меня есть HTML-документ, расположенный на http://somedomain.com/somedir/example.html

Документ содержит четыре ссылки:

http://otherdomain.com/other.html

http://somedomain.com/other.html

/ only.html

test.html

Как получить полные URL-адреса для ссылок в текущем домене?

Я имею в виду, я должен получить:

http://somedomain.com/other.html

http://somedomain.com/only.html

http://somedomain.com/somedir/test.html

Первая ссылка должна игнорироваться, поскольку она не соответствует моему домену

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Что-то вроде

doc.search("a").map do |a| 
  url = a.attribute("href")
  #this part could be a lot more robust, but you get the idea...
  full_url = url.match("^http://") ? url : "http://somedomain.com/#{url}"
end.select{|url| url.match("^http://somedomain.com")}
0 голосов
/ 27 мая 2010

используйте регулярное выражение для извлечения ссылок из href = "URL" затем объединить с доменом, если он не начинается с "http"

Вот пример Python:

import re
import urlparse

domain = ...
html = ...
links = re.findall('href=[\'"](.*?)[\'"]', html)
links = [urlparse.urljoin(domain, link) for link in links if link]
...