Чуть менее заманчивая картинка, которая отражает на какие основные страны построено SEO на данном рынке
В статье мы закончили на том, что у нас есть большая таблица с данными сайтмапов сайтов некоторой отрасли. Давайте попробуем выжать максимум информации из них как красивыми, так и примитивными методами!
Для начала посмотрим, какие данные внутри
result_df = pd.read_csv('all_sitemaps_2.csv')
result_df.head()
Выглядит это примерно так:
Для начала нужно выделить протокол и наличие www в URL.
result_df['protocol'] = result_df['loc'].apply(lambda x: process_http(x,['http://','https://'])[1])
result_df['loc'] = result_df['loc'].apply(lambda x: process_http(x,['http://','https://'])[0])
result_df['www'] = result_df['loc'].apply(lambda x: process_http(x,['www.'])[1])
result_df['loc'] = result_df['loc'].apply(lambda x: process_http(x,['www.'])[0])
Давайте теперь посмотрим, что получилось с помощью сводной таблицы:
table = pd.pivot_table(
result_df,
index=["broker"],
columns=["protocol", "www"],
values=["loc"],
aggfunc={"loc":len},fill_value=0
)
Выводы очевидны - все используют https и домены c www.

Каких-то особых откровений тут нет. Давайте разделим урлы на составляющие.
def try_split(string, sep,idx):
try:
return string.split(sep)[idx]
except:
return ''
result_df['broker'] = result_df['loc'].apply(lambda x: try_split(x,'/',0))
table = pd.pivot_table(
result_df,
index=["broker"],
columns=["protocol", "www"],
values=["loc"],
aggfunc={"loc":len},fill_value=0
)
table
Сразу становится видно, какая компания самая древняя и крупная
Разделим дальше для ручной аннотации и посмотрим, что получится.
result_df['first_nav'] = result_df['loc'].apply(lambda x: try_split(x,'/',1))
result_df['second_nav'] = result_df['loc'].apply(lambda x: try_split(x,'/',2))
Сделаем сводную таблицу и скачаем файл. После этого сделаем ручную аннотацию.
table = pd.pivot_table(
result_df,
index=["first_nav","second_nav"],
columns=["broker"],
values=["loc"],
aggfunc={"loc":len},fill_value=0
)
table
table.to_csv('second_split.csv')
Ручную аннотацию делаем простым просеиванием ячеек в экселе по эвристикам (ищем зависимости в урлах). Получается такая картинка.
Вот в принципе и все. В третьей части статьи будет также про более глубокий семантический анализ, что получилось, а что нет.