从Ruby中的URL中删除除了网站名称以外的所有名称



通过URL列表进行迭代。URL以不同的格式出现:

https://twitter.com/sdfaskj... 
https://www.linkedin.com/asdkfjasd...
http://google.com/asdfjasdj...

等。

我想使用GSUB或类似的内容,除了删除网站名称以外的所有内容,仅获得" Twitter"," LinkedIn"one_answers" Google"。

在我的脑海中,理想情况下,我想要一个可以检查多种可能性的.gsub(url.gsub(" https://or https://or https://https://www。或www。或http://http://)并在没有发现"时替换它们。还需要在名称之后删除所有内容,因此" .com/wkadslflj ..."

attributes.css("a").each do |attribute|
  attribute_url = attribute["href"]
  attribute_scrape = attribute_url.gsub("https://", "")
  binding.pry
end

我将考虑URI.parse的组合以获取URL和PublicSuffix GEM以获取第二级域:

require 'public_suffix'
require 'uri'
url  = 'https://www.linkedin.com/asdkfjasd'
host = URI.parse(url).host                 # => 'www.linkedin.com'
PublicSuffix.parse(host).sld               # => 'linkedin'

您可以使用此gsub Regexp:

gsub(/http(s)?://(www.)?|.(com|net|co.uk|us)+.*/, '')

输出:

list = ["https://twitter.com/sdfaskj...", "https://www.linkedin.com/asdkfjasd...", "http://google.com/asdfjasdj..."] 
list.map { |u| u.gsub(/http(s)?://(www.)?|.(com|net|co.uk|us)+.*/, '') }
 => ["twitter", "linkedin", "google"] 

最新更新