Извлечь все URL-адреса из объекта json в Python - PullRequest
0 голосов
/ 19 июня 2020

У меня есть длинный объект json, который содержит URL-ссылки в значении, эти ссылки могут быть любой глубины и с любым ключом. Глубина и тональность неизвестны. Например,

data = {
  "name": "John Doe",
  "a": "https:/example.com",
  "b": {
    "c": "https://example.com/path",
    "d": {
      "e": "https://example.com/abc/?q=u",
    }
  }
}

Я хочу извлечь все ссылки в списке, например

links = ["https://example.com", "https://example.com/path", "https://example.com/abc/?q=u"]

Как я могу извлечь все ссылки из объекта, используя Python?

1 Ответ

2 голосов
/ 19 июня 2020

Вот рекурсивное решение:

def extract_urls(d):
    urls = []
    for k, v in d.items():
        if isinstance(v, str) and v.lower().startswith("http"):
            urls.append(v)
        elif isinstance(v, dict):
            urls.extend(etract_urls(v))
    return urls

extract_urls(data)

Вывод:

['https:/example.com',
 'https://example.com/path',
 'https://example.com/abc/?q=u']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...