Как сгруппировать ссылки по домену?
Задача следующая: мне нужно получить все ссылки с сайта, сгруппировать их по доменам, и посчитать каждую из ссылок.
То есть, примерно так:
www.google.com - 54 ссылок
www.youtube.com - 21 ссылок
www.yandex.ru - 34 ссылок
Как это можно сделать? Сразу хочу сказать, что изучаю Python меньше недели, и пока не разобрался. Заранее спасибо за помощь!
Код:
import requests
import re
from bs4 import BeautifulSoup
page = requests.get('https://yandex.ru/')
soup = BeautifulSoup(page.text,features='html.parser')
links = soup.findAll("a", attrs={'href': re.compile("https://")})
for i in links:
print(str(len(links)) + ' ' + str(i.get('href').split('/')[2]))
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
После выполнения кода в link_count_dict хранится количество ссылок с одним доменом, в link_dict сгруппированные по домену ссылки.
import requests
import re
from bs4 import BeautifulSoup
page = requests.get('https://yandex.ru/')
soup = BeautifulSoup(page.text,features='html.parser')
links = soup.findAll("a", attrs={'href': re.compile("https://")})
for i in links:
print(str(len(links)) + ' ' + str(i.get('href').split('/')[2]))
link_count_dict={}
link_dict={}
for link in links:
dom = link.get('href').split('/')[2]
link_dict[dom] = []
if link_count_dict.get(dom):
link_count_dict[dom]+=1
else:
link_count_dict[dom]=1
keys=link_dict.keys()
for key in keys:
for link in links:
if key in link.get('href'):
link_dict[key].append(link.get('href'))