5 اسکریپت پایتون برای خودکارسازی وظایف سئو

پایتون یک زبان برنامه نویسی قدرتمند است که در چند سال گذشته در صنعت سئو محبوبیت پیدا کرده است.

پایتون با نحو نسبتاً ساده، عملکرد کارآمد و فراوانی کتابخانه ها و فریم ورک ها، تحولی در نحوه رویکرد بسیاری از سئوکاران به کار خود ایجاد کرده است.

پایتون مجموعه ابزار همه کاره‌ای را ارائه می‌کند که می‌تواند به سریع‌تر، دقیق‌تر و موثرتر شدن فرآیند بهینه‌سازی کمک کند.

این مقاله به بررسی پنج اسکریپت پایتون می‌پردازد تا به افزایش تلاش‌های SEO شما کمک کند.

ساده ترین راه برای شروع با پایتون

اگر به دنبال فرو بردن انگشتان پای خود در برنامه نویسی پایتون هستید، Google Colab ارزش توجه دارد.

این یک پلتفرم رایگان و مبتنی بر وب است که یک زمین بازی مناسب برای نوشتن و اجرای کد پایتون بدون نیاز به تنظیمات محلی پیچیده فراهم می‌کند.

اساساً به شما امکان می دهد به نوت بوک های Jupyter در مرورگر خود دسترسی داشته باشید و مجموعه ای از کتابخانه های از پیش نصب شده را برای علم داده و یادگیری ماشین فراهم می کند.

بعلاوه، در بالای Google Drive ساخته شده است، بنابراین می توانید به راحتی کار خود را ذخیره کرده و با دیگران به اشتراک بگذارید.

برای شروع، مراحل زیر را دنبال کنید:

فعال کردن آپلود فایل

هنگامی که Google Colab را باز کردید، ابتدا باید توانایی ایجاد یک مخزن فایل موقت را فعال کنید. به همین سادگی روی نماد پوشه کلیک کنید.

این به شما امکان می‌دهد فایل‌های موقت را آپلود کنید و سپس فایل‌های نتایج را دانلود کنید.

دسترسی به پوشه

داده های منبع را بارگذاری کنید

بسیاری از اسکریپت های پایتون ما برای کار کردن به یک فایل منبع نیاز دارند. برای آپلود فایل کافیست روی دکمه آپلود کلیک کنید.

دکمه آپلود فایل

پس از اتمام نصب، می توانید آزمایش اسکریپت های پایتون زیر را شروع کنید.

اسکریپت 1: نقشه تغییر مسیر را خودکار کنید

ایجاد نقشه های تغییر مسیر برای سایت های بزرگ می تواند فوق العاده وقت گیر باشد. یافتن راه‌هایی برای خودکارسازی فرآیند می‌تواند به ما در صرفه‌جویی در زمان و تمرکز روی کارهای دیگر کمک کند.

نحوه کار این اسکریپت

این اسکریپت بر تجزیه و تحلیل محتوای وب برای یافتن مقالات مشابه متمرکز است.

  • ابتدا، دو فایل TXT URL را وارد می‌کند: یکی برای وب‌سایت هدایت‌شده (source_urls.txt) و دیگری برای سایتی که وب‌سایت هدایت‌شده را جذب می‌کند (target_urls.txt).
  • سپس، ما از کتابخانه Python Beautiful Soup برای ایجاد یک اسکراپر وب برای دریافت محتوای اصلی صفحه در صفحه استفاده می کنیم. این اسکریپت محتوای سرصفحه و پاورقی را نادیده می گیرد.
  • پس از خزیدن محتوا در تمام صفحات، از کتابخانه Python Polyfuzz برای تطبیق محتوا بین URL ها با درصد شباهت استفاده می کند.
  • در نهایت، نتایج را در یک فایل CSV چاپ می کند، از جمله درصد شباهت.

از اینجا، می‌توانید به‌صورت دستی هر URL با درصد شباهت کم را بررسی کنید تا نزدیک‌ترین تطابق بعدی را پیدا کنید.

فیلمنامه را دریافت کنید

#import libraries
from bs4 import BeautifulSoup, SoupStrainer
from polyfuzz import PolyFuzz
import concurrent.futures
import csv
import pandas as pd
import requests

#import urls
with open("source_urls.txt", "r") as file:
    url_list_a = [line.strip() for line in file]

with open("target_urls.txt", "r") as file:
    url_list_b = [line.strip() for line in file]

#create a content scraper via bs4
def get_content(url_argument):
    page_source = requests.get(url_argument).text
    strainer = SoupStrainer('p')
    soup = BeautifulSoup(page_source, 'lxml', parse_only=strainer)
    paragraph_list = [element.text for element in soup.find_all(strainer)]
    content = " ".join(paragraph_list)
    return content

#scrape the urls for content
with concurrent.futures.ThreadPoolExecutor() as executor:
    content_list_a = list(executor.map(get_content, url_list_a))
    content_list_b = list(executor.map(get_content, url_list_b))

content_dictionary = dict(zip(url_list_b, content_list_b))

#get content similarities via polyfuzz
model = PolyFuzz("TF-IDF")
model.match(content_list_a, content_list_b)
data = model.get_matches()

#map similarity data back to urls
def get_key(argument):
    for key, value in content_dictionary.items():
        if argument == value:
            return key
    return key
	
with concurrent.futures.ThreadPoolExecutor() as executor:
    result = list(executor.map(get_key, data["To"]))

#create a dataframe for the final results
to_zip = list(zip(url_list_a, result, data["Similarity"]))
df = pd.DataFrame(to_zip)
df.columns = ["From URL", "To URL", "% Identical"]

#export to a spreadsheet
with open("redirect_map.csv", "w", newline="") as file:
    columns = ["From URL", "To URL", "% Identical"]
    writer = csv.writer(file)
    writer.writerow(columns)
    for row in to_zip:
        writer.writerow(row)

در حالی که توضیحات متا یک عامل رتبه‌بندی مستقیم نیستند، به ما کمک می‌کنند تا نرخ کلیک ارگانیک خود را بهبود بخشیم. خالی گذاشتن توضیحات متا، احتمال ایجاد توضیحات متا را افزایش می دهد.

اگر ممیزی سئوی شما نشان می‌دهد که تعداد زیادی URL فاقد توضیحات متا هستند، ممکن است وقت گذاشتن برای نوشتن همه آن‌ها به‌ویژه برای وب‌سایت‌های تجارت الکترونیک دشوار باشد.

این اسکریپت با هدف کمک به شما در صرفه جویی در زمان با خودکار کردن این فرآیند برای شما طراحی شده است.

نحوه کار اسکریپت

  • ابتدا، اسکریپت لیستی از URL ها را از یک فایل TXT (urls.txt) وارد می کند.
  • سپس، تمام محتوای URL ها را تجزیه می کند.
  • هنگامی که محتوا تجزیه می شود، توضیحات متا را با هدف کمتر از 155 کاراکتر ایجاد می کند.
  • نتایج را به یک فایل CSV صادر می کند.

فیلمنامه را دریافت کنید

!pip install sumy
from sumy.parsers.html import HtmlParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.nlp.stemmers import Stemmer
from sumy.utils import get_stop_words
from sumy.summarizers.lsa import LsaSummarizer
import csv

#1) imports a list of URLs from a txt file
with open('urls.txt') as f:
    urls = [line.strip() for line in f]

results = []

# 2) analyzes the content on each URL
for url in urls:
    parser = HtmlParser.from_url(url, Tokenizer("english"))
    stemmer = Stemmer("english")
    summarizer = LsaSummarizer(stemmer)
    summarizer.stop_words = get_stop_words("english")
    description = summarizer(parser.document, 3)
    description = " ".join([sentence._text for sentence in description])
    if len(description) > 155:
        description = description[:152] + '...'
    results.append({
        'url': url,
        'description': description
    })

# 4) exports the results to a csv file
with open('results.csv', 'w', newline="") as f:
    writer = csv.DictWriter(f, fieldnames=['url','description'])
    writer.writeheader()
    writer.writerows(results)

اسکریپت 3: کلمات کلیدی را با N-gram تجزیه و تحلیل کنید

N-gram مفهوم جدیدی نیست اما همچنان برای سئو مفید است. آنها می توانند به ما در درک مضامین در مجموعه های بزرگ داده های کلیدواژه کمک کنند.

N-گرم

نحوه کار این اسکریپت

خروجی این اسکریپت در یک فایل TXT است که کلمات کلیدی را به یونیگرام، بیگرام و تری گرام تقسیم می کند.

  • ابتدا یک فایل TXT از تمام کلمات کلیدی شما (keyword.txt) وارد می کند.
  • سپس از یک کتابخانه پایتون به نام Counter برای تجزیه و تحلیل و استخراج N-gram ها استفاده می کند.
  • سپس نتایج را در یک فایل TXT جدید صادر می کند.

این اسکریپت را دریافت کنید

#Import necessary libraries
import re
from collections import Counter

#Open the text file and read its contents into a list of words
with open('keywords.txt', 'r') as f:
    words = f.read().split()

#Use a regular expression to remove any non-alphabetic characters from the words
words = [re.sub(r'[^a-zA-Z]', '', word) for word in words]

#Initialize empty dictionaries for storing the unigrams, bigrams, and trigrams
unigrams = {}
bigrams = {}
trigrams = {}

#Iterate through the list of words and count the number of occurrences of each unigram, bigram, and trigram
for i in range(len(words)):
    # Unigrams
    if words[i] in unigrams:
        unigrams[words[i]] += 1
    else:
        unigrams[words[i]] = 1
        
    # Bigrams
    if i < len(words)-1:
        bigram = words[i] + ' ' + words[i+1]
        if bigram in bigrams:
            bigrams[bigram] += 1
        else:
            bigrams[bigram] = 1
        
    # Trigrams
    if i < len(words)-2:
        trigram = words[i] + ' ' + words[i+1] + ' ' + words[i+2]
        if trigram in trigrams:
            trigrams[trigram] += 1
        else:
            trigrams[trigram] = 1

# Sort the dictionaries by the number of occurrences
sorted_unigrams = sorted(unigrams.items(), key=lambda x: x[1], reverse=True)
sorted_bigrams = sorted(bigrams.items(), key=lambda x: x[1], reverse=True)
sorted_trigrams = sorted(trigrams.items(), key=lambda x: x[1], reverse=True)

# Write the results to a text file
with open('results.txt', 'w') as f:
    f.write("Most common unigrams:\n")
    for unigram, count in sorted_unigrams[:10]:
        f.write(unigram + ": " + str(count) + "\n")
    f.write("\nMost common bigrams:\n")
    for bigram, count in sorted_bigrams[:10]:
        f.write(bigram + ": " + str(count) + "\n")
    f.write("\nMost common trigrams:\n")
    for trigram, count in sorted_trigrams[:10]:
        f.write(trigram + ": " + str(count) + "\n")

اسکریپت 4: کلمات کلیدی را در کلاسترهای موضوعی گروه بندی کنید

با پروژه های جدید سئو، تحقیق کلمات کلیدی همیشه در مراحل اولیه است. گاهی اوقات ما با هزاران کلمه کلیدی در یک مجموعه داده سر و کار داریم که گروه بندی را چالش برانگیز می کند.

پایتون به ما اجازه می دهد تا به طور خودکار کلمات کلیدی را در گروه های مشابه دسته بندی کنیم تا روند روند را شناسایی کرده و نقشه برداری کلمات کلیدی خود را تکمیل کنیم.

نحوه کار این اسکریپت

  • این اسکریپت ابتدا یک فایل TXT از کلمات کلیدی (keywords.txt) را وارد می کند.
  • سپس اسکریپت کلمات کلیدی را با استفاده از TfidfVetorizer و AffinityPropagation تجزیه و تحلیل می کند.
  • سپس به هر خوشه موضوعی یک مقدار عددی اختصاص می دهد.
  • سپس نتایج به یک فایل csv صادر می شود.

این اسکریپت را دریافت کنید

import csv
import numpy as np
from sklearn.cluster import AffinityPropagation
from sklearn.feature_extraction.text import TfidfVectorizer

# Read keywords from text file
with open("keywords.txt", "r") as f:
    keywords = f.read().splitlines()

# Create a Tf-idf representation of the keywords
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(keywords)

# Perform Affinity Propagation clustering
af = AffinityPropagation().fit(X)
cluster_centers_indices = af.cluster_centers_indices_
labels = af.labels_

# Get the number of clusters found
n_clusters = len(cluster_centers_indices)

# Write the clusters to a csv file
with open("clusters.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Cluster", "Keyword"])
    for i in range(n_clusters):
        cluster_keywords = [keywords[j] for j in range(len(labels)) if labels[j] == i]
        if cluster_keywords:
            for keyword in cluster_keywords:
                writer.writerow([i, keyword])
        else:
            writer.writerow([i, ""])

اسکریپت 5: لیست کلمات کلیدی را با لیستی از موضوعات از پیش تعریف شده مطابقت دهید

این شبیه به اسکریپت قبلی است، با این تفاوت که به شما امکان می دهد لیستی از کلمات کلیدی را با مجموعه ای از موضوعات از پیش تعریف شده مطابقت دهید.

این برای مجموعه های بزرگی از کلمات کلیدی عالی است زیرا آنها را در دسته های 1000 پردازش می کند تا از خرابی سیستم جلوگیری کند.

نحوه کار این اسکریپت

  • این اسکریپت یک لیست کلمات کلیدی (keywords.txt) و یک لیست موضوعات (topics.txt) را وارد می کند.
  • سپس موضوعات و لیست کلمات کلیدی را تجزیه و تحلیل می کند و آنها را با نزدیکترین تطابق مطابقت می دهد. اگر همخوانی پیدا نکرد، آن را به عنوان دیگر دسته بندی می کند.
  • سپس نتایج به یک فایل CSV صادر می شود.

این اسکریپت را دریافت کنید

import pandas as pd
import spacy
from spacy.lang.en.stop_words import STOP_WORDS

# Load the Spacy English language model
nlp = spacy.load("en_core_web_sm")

# Define the batch size for keyword analysis
BATCH_SIZE = 1000

# Load the keywords and topics files as Pandas dataframes
keywords_df = pd.read_csv("keywords.txt", header=None, names=["keyword"])
topics_df = pd.read_csv("topics.txt", header=None, names=["topic"])

# Define a function to categorize a keyword based on the closest related topic
def categorize_keyword(keyword):
    # Tokenize the keyword
    tokens = nlp(keyword.lower())
    # Remove stop words and punctuation
    tokens = [token.text for token in tokens if not token.is_stop and not token.is_punct]
    # Find the topic that has the most token overlaps with the keyword
    max_overlap = 0
    best_topic = "Other"
    for topic in topics_df["topic"]:
        topic_tokens = nlp(topic.lower())
        topic_tokens = [token.text for token in topic_tokens if not token.is_stop and not token.is_punct]
        overlap = len(set(tokens).intersection(set(topic_tokens)))
        if overlap > max_overlap:
            max_overlap = overlap
            best_topic = topic
    return best_topic

# Define a function to process a batch of keywords and return the results as a dataframe
def process_keyword_batch(keyword_batch):
    results = []
    for keyword in keyword_batch:
        category = categorize_keyword(keyword)
        results.append({"keyword": keyword, "category": category})
    return pd.DataFrame(results)

# Initialize an empty dataframe to hold the results
results_df = pd.DataFrame(columns=["keyword", "category"])

# Process the keywords in batches
for i in range(0, len(keywords_df), BATCH_SIZE):
    keyword_batch = keywords_df.iloc[i:i+BATCH_SIZE]["keyword"].tolist()
    batch_results_df = process_keyword_batch(keyword_batch)
    results_df = pd.concat([results_df, batch_results_df])

# Export the results to a CSV file
results_df.to_csv("results.csv", index=False)

کار با پایتون برای سئو

پایتون یک ابزار فوق العاده قدرتمند و همه کاره برای متخصصان سئو است.

چه یک مبتدی یا یک متخصص باتجربه باشید، اسکریپت‌های رایگانی که در این مقاله به اشتراک گذاشته‌ام، نقطه شروعی عالی برای بررسی احتمالات پایتون در سئو هستند.

با نحو بصری و مجموعه وسیعی از کتابخانه ها، پایتون می تواند به شما کمک کند کارهای خسته کننده را خودکار کنید، داده های پیچیده را تجزیه و تحلیل کنید، و بینش جدیدی در مورد عملکرد وب سایت خود به دست آورید. خوب چرا امتحانش نکنیم؟

موفق باشید، و کد نویسی مبارک!

نظرات بیان شده در این مقاله نظرات نویسنده مهمان است و لزوماً سرزمین موتور جستجو نیست. نویسندگان کارکنان در اینجا فهرست شده اند.