Čtvrtek , 26 Červen 2025
Domů Programování Python GUI & SEO nástroje skript
ProgramováníPython

Python GUI & SEO nástroje skript

blank
blank

V Pythonu lze vytvořit mnoho užitečných SEO nástrojů. Jeden takový nástroj může být skript, který kontroluje on-page SEO faktory jednotlivých stránek na webu. Pro tento účel můžeme použít knihovny requests pro stahování obsahu stránek a beautifulsoup4 pro parsování HTML a získání potřebných dat.

Tento skript vytváří jednoduchou GUI aplikaci, která umožňuje uživateli zadat URL pro analýzu a poté zobrazuje výsledky analýzy ve výstupním textovém poli.

Tento skript kontroluje mnoho dalších SEO faktorů, včetně kontrol dob načítání stránky, kontroly, zda stránka používá HTTPS, kontroly, zda stránka má robots.txt a sitemap.xml, kontroly počtu interních a externích odkazů, kontroly nadpisů různých úrovní (H1-H6), kontroly, zda stránka má favicon, a kontroly meta tagů.

				
					from bs4 import BeautifulSoup
import requests
import tkinter as tk
from tkinter import messagebox
from urllib.parse import urlparse, urljoin
import time

def seo_analyze():
    # get value from form
    url = url_entry.get()

    # check if URL was entered
    if not url:
        messagebox.showerror('Error', 'Please enter a valid URL.')
        return

    start_time = time.time()
    response = requests.get(url)
    load_time = time.time() - start_time

    soup = BeautifulSoup(response.text, 'html.parser')

    # Check title
    title_tag = soup.title.string if soup.title else "No title found."

    # Check meta description
    description_tag = soup.find('meta', attrs={'name': 'description'})
    description = description_tag["content"] if description_tag else "No description found."

    # Check H1-H6 tags
    h_tags = [len(soup.find_all(f'h{i}')) for i in range(1, 7)]

    # Find internal and external links
    links = soup.find_all('a', href=True)
    int_links_count = len([urljoin(url, link['href']) for link in links if urljoin(url, link['href']).startswith(url)])
    ext_links_count = len(links) - int_links_count

    # Check if website has robots and sitemap
    robots_exists = 'Yes' if requests.get(urljoin(url, '/robots.txt')).status_code == 200 else 'No'
    sitemap_exists = 'Yes' if requests.get(urljoin(url, '/sitemap.xml')).status_code == 200 else 'No'

    # Check if website is using HTTPS
    scheme = urlparse(url).scheme
    is_https = 'Yes' if scheme == 'https' else 'No'

    # Check metadata
    metadata = soup.findAll('meta')
    meta_info = ['No' for _ in range(4)]
    for meta in metadata:
        if 'name' in meta.attrs:
            if meta.attrs['name'] == 'viewport':
                meta_info[0] = 'Yes'
            if meta.attrs['name'] == 'robots':
                meta_info[1] = 'Yes'
        if 'rel' in meta.attrs:
            if 'canonical' in meta.attrs['rel']:
                meta_info[2] = 'Yes'
        if 'property' in meta.attrs:
            if 'og:image' in meta.attrs['property']:
                meta_info[3] = 'Yes'

    # Check favicon
    has_favicon = 'Yes' if soup.find('link', rel = 'icon') else 'No'

    # Number of images without alt attribute
    images = soup.find_all('img')
    img_count = len(images)
    img_no_alt_count = sum(1 for img in images if not img.get('alt'))

    output_text.delete(1.0, tk.END)
    output_text.insert(tk.END, f'URL: {url}\n')
    output_text.insert(tk.END, f'Title: {title_tag}\n')
    output_text.insert(tk.END, f'Description: {description}\n')
    output_text.insert(tk.END, f'Load time: {load_time}\n')
    output_text.insert(tk.END, f'Using Https: {is_https}\n')
    output_text.insert(tk.END, f'Robots.txt exists: {robots_exists}\n')
    output_text.insert(tk.END, f'Sitemap.xml exists: {sitemap_exists}\n')
    output_text.insert(tk.END, f'Has favicon: {has_favicon}\n')
    output_text.insert(tk.END, f'Has viewport meta tag: {meta_info[0]}\n')
    output_text.insert(tk.END, f'Has robots meta tag: {meta_info[1]}\n')
    output_text.insert(tk.END, f'Has canonical link: {meta_info[2]}\n')
    output_text.insert(tk.END, f'Has OpenGraph protocol image: {meta_info[3]}\n')
    for i in range(6):
        output_text.insert(tk.END, f'H{i+1} tags count: {h_tags[i]}\n')
    output_text.insert(tk.END, f'Internal links: {int_links_count}\n')
    output_text.insert(tk.END, f'External links: {ext_links_count}\n')
    output_text.insert(tk.END, f'Number of images: {img_count}\n')
    output_text.insert(tk.END, f'Images without alt attribute: {img_no_alt_count}\n')

window = tk.Tk()
window.title("SEO Analyzer")

url_label = tk.Label(window, text="URL")
url_label.pack()

url_entry = tk.Entry(window)
url_entry.pack()

analyze_button = tk.Button(window, text="Analyze", command=seo_analyze)
analyze_button.pack()

output_text = tk.Text(window)
output_text.pack()

window.mainloop()
				
			

Zde je ukázka spuštěného skriptu:

blank

Zanechte komentář

Napsat komentář

Související články

blank
ProgramováníStrojové učeníUmělá inteligence

Neuromorfní čipy vs. GPU/TPU

Top články Neuromorfní čipy vs. GPU/TPU 19. 6. 2025 Edge-AI v IoT:...

blank
PythonTensorFlow.js

🐍 Úvod do TensorFlow Lite & Python

TensorFlow Lite (TFLite) ve spojení s Pythonem otevírá dveře on-device strojovému učení...

blank
Python

Detekční systém v Pythonu s GPU akcelerací

Desktop Motion Detection s GPU akcelerací🎯 Účel programuTento nástroj sleduje vybrané okno...

blank
PythonYouTube videa

Python generátor náhledového obrázku YouTube videa

import re import os import requests import argparse from urllib.parse import urlparse,...