2016-05-30 3 views
2

Скажем, я нахожусь на веб-странице https://company.slack.com/messages/@user1/Как получить URL-ссылки на главную страницу

Как я мог получить URL домашней страницы компании/сайта в Java/Python, который https://slack.com/ (в данном случае)

Теперь это, кажется, так легко для некоторых случаев, но я хочу обобщить это & не может охватить все случаи, как у слабины/google_design/и т.д ....

Say подобные случаи:

https://www.youtube.com/watch?v=deL9VeNjcH8

Ожидаемый результат: https://www.youtube.com

https://angel.co/weav-music?utm_source=lb

Ожидаемый результат: https://angel.co

https://design.google.com/

Ожидаемый результат: https://www.google.com

Код по ссылке ниже:

#include <iostream> 
#include <string> 

using namespace std; 

int main() { 
    string s = "https://angel.co/weav-music?utm_source=lb"; 
    int cnt=0; 
    int p; 
    int l=s.length(); 
    for(int i=0;i<l;i++) 
     { 
      if(s[i]=='/' && cnt!=3) 
       cnt++; 
      if(s[i]=='/' && cnt==3){ 
       p=i;break;} 
     } 
    cout<<s.substr(0,p); 
    return 0; 
} 

@all Пожалуйста, см 2-й комментарий JonasCz на его собственный ответ, что на самом деле помог мне

+0

Я была успешно реализовали примеры Youtube, angel.co, просто обнаружив сначала «/» в URL-адресе после http: // – x0v

+0

Мы хотели бы видеть ваш код. –

+0

Несомненно, опубликует в некотором роде – x0v

ответ

1

Вы можете использовать что-то вроде этого:

URL aURL = new URL("https://company.slack.com/messages/@user1/"); 
System.out.println(aURL.getProtocol() + "://" + aURL.getHost()); 

Какие принты:

https://company.slack.com 

Это работает и для других URL-адресов. См. the docs для более подробной информации.


Если вы хотите получить только основной домен без субдомена (т.е. только http://slack.com), вы можете use Guava's InternetDomainName, например. например:

InternetDomainName.from("company.slack.com").topPrivateDomain().name(); 

Вышеуказанное вернет slack.com.

Вышеупомянутый вызов метода будет работать для более старых версий библиотеки Guava. Для гуавы 19,0 использования ToString() вместо .name()


Чтобы быть полным, весь код, в вашем случае, будет выглядеть следующим образом:

URL aURL = new URL("https://company.slack.com/messages/@user1/"); 
InternetDomainName.from(aURL.getHost()).topPrivateDomain().name(); 
+0

, а также разбивайте результат на точки и заменяйте субдомен ничем, если существует. –

+0

Нет, но я хочу, чтобы результат был slack.com not company.slack.com – x0v

+0

Компания в компании.slack.com похожа на пользователя в домене – x0v

Смежные вопросы