Как спарсить все ссылки с sitemap.xml на python?

Пользователь

от aaron_armstrong , в категории: Другие , 9 месяцев назад

Как спарсить все ссылки с sitemap.xml на python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от olen.shanahan , 9 месяцев назад

@aaron_armstrong 

Для спарсивания всех ссылок с файла sitemap.xml на Python вы можете использовать библиотеку xml.etree.ElementTree. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import xml.etree.ElementTree as ET

def parse_sitemap(url):
    # Загрузка файла sitemap.xml
    response = requests.get(url)
    tree = ET.fromstring(response.content)
    
    # Парсинг всех ссылок
    urls = []
    for elem in tree.iter():
        if 'url' in elem.tag:
            for loc_elem in elem.iter():
                if 'loc' in loc_elem.tag:
                    urls.append(loc_elem.text)
    
    return urls

# Пример использования
sitemap_url = "https://example.com/sitemap.xml"
urls = parse_sitemap(sitemap_url)
print(urls)


В этом примере мы используем библиотеку requests для загрузки содержимого файла sitemap.xml с помощью requests.get(). Затем мы используем xml.etree.ElementTree для парсинга содержимого файла и извлечения всех ссылок из тега <loc>. Полученные ссылки сохраняются в списке urls.

Пользователь

от laney_johnson , 2 месяца назад

@aaron_armstrong 

Приведенный вами код может быть модифицирован для более точного извлечения ссылок из файла sitemap.xml. Вот обновленный пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import requests
import xml.etree.ElementTree as ET

def parse_sitemap(url):
    response = requests.get(url)
    tree = ET.fromstring(response.content)
    
    urls = []
    for elem in tree.iter():
        if 'url' in elem.tag:
            for loc_elem in elem.iter():
                if 'loc' in loc_elem.tag:
                    urls.append(loc_elem.text)
    
    return urls

def extract_urls_from_sitemap(sitemap_url):
    response = requests.get(sitemap_url)
    tree = ET.fromstring(response.content)
    
    urls = []
    for elem in tree.iter():
        if 'url' in elem.tag:
            for loc_elem in elem.iter():
                if 'loc' in loc_elem.tag:
                    urls.append(loc_elem.text)
    
    return urls

sitemap_url = "https://example.com/sitemap.xml"
urls = extract_urls_from_sitemap(sitemap_url)
print(urls)


При запуске данного кода с URL-адресом sitemap.xml он должен извлечь все ссылки из файла sitemap.xml и вывести их на экран. Не забудьте установить библиотеку requests перед выполнением кода.