Python ile Sitemap URL Çekme Yöntemleri

0 Respuestas 12 Visitas
·
Participantes
Autor del tema #1
Python, web sitesi taraması ve veri toplama işlemlerinde oldukça güçlü ve esnek bir dil. Bu bağlamda, sitemap dosyaları, bir web sitesinin tüm sayfalarının listesini içerdiği için, bu dosyalardan URL'leri otomatik olarak çekmek, büyük projelerde veya SEO çalışmalarında zaman kazandırıcı olabilir. Peki, Python kullanarak sitemap URL'lerini nasıl çekebiliriz? İşte detaylar:

İlk adım olarak, sitemap genellikle XML formatında olur ve sitenin kök dizininde veya robots.txt dosyasında referans gösterilir. Bu yüzden, öncelikle robots.txt dosyasını indirip, sitemap adreslerini bulmak gerekebilir.

Örneğin, robots.txt dosyasını çekip, sitemap URL'lerini listeye ekledikten sonra, sitemap XML dosyasını parse edebiliriz. Bunun için xml.etree.ElementTree modülü veya lxml gibi kütüphaneler kullanılabilir.

Örnek kod ile açıklayacak olursak:

CÓDIGO
123456789101112131415161718192021222324python  
import requests  
import xml.etree.ElementTree as ET  
  
[b]Robots.txt'ten sitemap URL'sini çekme[/b]
robots_url = 'https://ornekwebsite.com/robots.txt'  
robots_response = requests.get(robots_url)  
sitemap_urls = []  
  
if robots_response.status_code == 200:  
    for line in robots_response.text.splitlines():  
        if line.startswith('Sitemap:'):  
            sitemap_url = line.split(':', 1)[1].strip()  
            sitemap_urls.append(sitemap_url)  
  
[b]Sitemap'dan URL'leri çekme ve listeye ekleme[/b]
for sitemap_url in sitemap_urls:  
    response = requests.get(sitemap_url)  
    if response.status_code == 200:  
        root = ET.fromstring(response.content)  
        for url in root.findall('.//{http://www.sitemaps.org/schemas/sitemap/0.9}url'):  
            loc = url.find('{http://www.sitemaps.org/schemas/sitemap/0.9}loc').text  
            print(loc)  
  


Bu örnekte, ilk olarak robots.txt dosyasından sitemap URL'si alınır; sonra, sitemap XML'i parse edilerek, içindeki tag'leri aracılığıyla tüm sayfa URL'leri listelenir. Bu yöntem, özellikle büyük sitelerde otomasyon ve güncel veri toplama açısından oldukça etkilidir.

Elbette, farklı sitemap formatları veya çoklu sitemap indexleriyle karşılaşmak mümkün. Bu durumda, rekursif olarak index dosyalarını da parse etmek gerekebilir. Ayrıca, istekleri yavaşlatmak ve sunucuya yüklenmemek adına, uygun gecikmeler ve hata yönetimi eklenmelidir.

Bunlar dışında, farklı kütüphaneler veya framework'ler kullanarak, daha gelişmiş ve ölçeklenebilir çözümler inşa etmek de mümkündür. Python'un esnekliği sayesinde, bu işlemi farklı ihtiyaçlara uygun hale getirmek oldukça kolaydır.

Debes haber iniciado sesión para responder.

0 citas seleccionadas