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

ale*_*wby 1 ruby url gsub

我正在迭代一个URL列表.网址有不同的格式,如:

https://twitter.com/sdfaskj... 
https://www.linkedin.com/asdkfjasd...
http://google.com/asdfjasdj...
Run Code Online (Sandbox Code Playgroud)

等等

我想使用Gsub或类似的东西来删除除网站名称之外的所有内容,分别只获得"twitter","linkedin"和"google".

在我的脑海中,理想情况下,我想像.gsub一样可以检查多种可能性(url.gsub("https://或https:// www.或http:// etc.","")并替换当找不到任何""时,它们也需要删除名称后的所有内容,所以".com/wkadslflj ......"

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

spi*_*ann 5

我会考虑URI.parse从URL和PublicSuffixgem获取主机名以获得第二级域的组合:

require 'public_suffix'
require 'uri'

url  = 'https://www.linkedin.com/asdkfjasd'
host = URI.parse(url).host                 # => 'www.linkedin.com'
PublicSuffix.parse(host).sld               # => 'linkedin'
Run Code Online (Sandbox Code Playgroud)

  • @Max`split(?.)[ - 2]`无法可靠地返回域中最重要的部分,例如,对于有效的域,例如`www.google.com.au`或`www.amazon.co.它将返回`com`或`co`.而`PublicSuffix`宝石将返回`google`和`amazon`. (3认同)