@Albion26

Как достать UTM-метки из URL, если прописаны они не во всех случаях?

Суть проблемы: у меня есть большой список доменов.
Пример:
list_url = [{'id': '7a8809acc2b249b7a868a49b89793cc9',
'url': 'https://mysite.com/utm_source=facebook&utm_medium=cpc'},
{'id': '7a8809acc2b249b7a868a49b89793cc4',
'url': 'https://mysite.com/contacts'}]

Я перебираю каждый из них и записываю в отдельный словарь id, url, source, medium если прописаны UTM-метки, делаю я это, через регулярные выражения.
'url': list_url['url'],
'source' : re.findall('(?<=utm_source=).*(?=&utm_medium)',list_url['url']),
'medium' : re.findall('(?<=utm_medium=).*(?=&utm_campaign)',list_url['url'])

Если использовать метод findall в source, medium записывается список, чтобы достать значение из него я могу обратиться к нулевому элементу, но в этом случае отбрасываются все случаи, где нет значений source, medium.
Как можно прописать условие замены пустых значений списка на None.
В общем по итогу, я должен получить следующее:
[{'id': '7a8809acc2b249b7a868a49b89793cc9',
'url': 'https://mysite.com/utm_source=facebook&utm_medium=cpc',
'source': 'facebook',
'medium' : 'cpc'},

'{id': '7a8809acc2b249b7a868a49b89793cc4',
'url': 'https://mysite.com/contacts',
'source' : None
'medium' : None}]
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
def parse(mark, url):
    result = re.search(r'utm_{}=(.+?)(&|$)'.format(mark), url)
    if result:
        return result.group(1)
    return None

'source' : parse('source', list_url['url'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы