Bugün sizlere Python ile Durum Kodlarını Kontrol Etme veya Python Kırık linkleri ve yönlendirmeleri kontrol etme gibi SEO Projelerinizde kullanabileceğiniz faydalı olacak bir kod yapısını sizlerle paylaşmak istedik. Python ile durum kodlarını analiz için tek yapmanız gereken analiz etmek istediğiniz sitenin sitemap yani site haritasının yolunu belirtmek olacaktır.
Durum Kodu Neydi?
HTTP durum kodları, istemci (veya tarayıcı) ile sunucu arasındaki aktarım işlemi sırasında neler olduğunu bize ifade eden üç haneli numaralardır.
Çalışma Mantığı;
- Tüm site haritası XML dosyalarını bulur.
- Tüm site haritası XML ayrıştırır.
- İçerisindeki URL ‘ler ayıklanır.
- Tüm URL ‘lerin durum kodlarının kontrolü yapar.
- Yönlendirme olup olmadığını kontrol eder.
- Excel olarak site-status-codes.xlsx olarak sizlere çıktı sunar.
Kütüphanelerin Yüklenmesi
Python çok sayıda kütüphaneye sahip oldukça fonksiyonlu bir yazılım dilidir. Her biri oldukça iyi olan kütüphaneleri kullanmak istediğinizde gerekli kodla çağrılarak işlem yapmanız gerekiyor. Bu hazırladığım yapı için yüklenmesi gereken kütüphaneleri yüklemeniz gerekmektedir.
Site Haritası İle Python Durum Kodu:
import requests from bs4 import BeautifulSoup from tqdm import tqdm import pandas as pd import openpyxl import warnings import colorama from colorama import Fore, Back, Style colorama.init() print(Fore.GREEN) print ("_________________________________________________________________________") print ("# 360Stradigi.com - MS - Mesut ŞENER - Sitemap URL Status Code Checker") print("# 1) Site Haritanızı sitemap içerisinde belirtin ve enter 'a basın") print("# 2) tarama isleminden sonra site-status-codes.xlsx adında dosya oluşacak içerisinde kontrol edebilirsiniz.") print ("_________________________________________________________________________") warnings.filterwarnings("ignore") print("!ÖRNEK -->: https://360stradigi.com/sitemap_index.xml ") def check_site_status_codes(sitemap_url): # Site haritasını indirin ve içeriğini ayrıştırın response = requests.get(sitemap_url) sitemap_content = response.text soup = BeautifulSoup(sitemap_content, "lxml") loc_tags = soup.find_all("loc") # Tüm URL'leri bir listeye kaydedin urls = [loc.text for loc in loc_tags] # Alt site haritalarının URL'lerini de listeye ekleyin for loc in loc_tags: sub_sitemap_response = requests.get(loc.text) sub_sitemap_content = sub_sitemap_response.text sub_soup = BeautifulSoup(sub_sitemap_content, "lxml") sub_loc_tags = sub_soup.find_all("loc") sub_urls = [sub_loc.text for sub_loc in sub_loc_tags] urls.extend(sub_urls) # Tüm URL'leri dolaşın ve durum kodlarını, yönlendirme olup olmadığını, # yönlendirilen URL'yi ve yönlendirme türünü alın status_codes = [] redirected_urls = [] redirect_types = [] pbar = tqdm(total=len(urls)) # İlerleme çubuğunu oluşturun for url in urls: response = requests.get(url) status_codes.append(response.status_code) if response.history: # URL'nin yönlendirme mevcuttur redirected_url = response.url redirect_type = response.history[0].status_code else: # URL'nin yönlendirme yoktur redirected_url = url redirect_type = None redirected_urls.append(redirected_url) redirect_types.append(redirect_type) pbar.update(1) # İlerleme çubuğunu güncelle pbar.close() # İlerleme çubuğunu kapat # URL'ler, yönlendirilen URL'ler, yönlendirme türleri ve durum kodlarını bir data frame'e çevirin df = pd.DataFrame({ "URL": urls, "Redirected URL": redirected_urls, "Redirect Type": redirect_types, "Status Code": status_codes }) # Excel dosyasını oluşturun ve verileri yazın df.to_excel("site-status-codes.xlsx", index=False) sitemap_url = input("Lütfen site haritasının URL'sini girin: ") check_site_status_codes(sitemap_url)
Mesut Şener