5 نصوص Python لأتمتة مهام تحسين محركات البحث
نشرت: 2023-04-12Python هي لغة برمجة قوية اكتسبت شعبية في صناعة تحسين محركات البحث على مدار السنوات القليلة الماضية.
من خلال تركيبها البسيط نسبيًا والأداء الفعال ووفرة المكتبات والأطر ، أحدثت Python ثورة في كيفية تعامل العديد من مُحسنات محركات البحث مع عملهم.
تقدم Python مجموعة أدوات متعددة الاستخدامات يمكن أن تساعد في جعل عملية التحسين أسرع وأكثر دقة وأكثر فعالية.
تستكشف هذه المقالة خمسة نصوص Python للمساعدة في تعزيز جهود تحسين محركات البحث.
- أتمتة خريطة إعادة التوجيه.
- اكتب أوصافًا تعريفية مجمعة.
- تحليل الكلمات الرئيسية باستخدام N-grams.
- تجميع الكلمات الأساسية في مجموعات المواضيع.
- مطابقة قائمة الكلمات الرئيسية بقائمة من الموضوعات المحددة مسبقًا.
أسهل طريقة لبدء استخدام بايثون
إذا كنت تبحث عن غمس أصابع قدميك في برمجة Python ، فإن Google Colab يستحق التفكير.
إنها منصة مجانية قائمة على الويب توفر ملعبًا مناسبًا لكتابة وتشغيل كود Python دون الحاجة إلى إعداد محلي معقد.
بشكل أساسي ، يسمح لك بالوصول إلى Jupyter Notebooks داخل متصفحك ويوفر مجموعة من المكتبات المثبتة مسبقًا لعلوم البيانات والتعلم الآلي.
بالإضافة إلى ذلك ، فهو مصمم على Google Drive ، بحيث يمكنك بسهولة حفظ عملك ومشاركته مع الآخرين.
للبدء ، اتبع الخطوات التالية:
تفعيل تحميل الملفات
بمجرد فتح Google Colab ، ستحتاج أولاً إلى تمكين القدرة على إنشاء مستودع ملفات مؤقت. الأمر بسيط مثل النقر على أيقونة المجلد.
يتيح لك هذا تحميل الملفات المؤقتة ثم تنزيل أي ملفات نتائج.
تحميل بيانات المصدر
تتطلب العديد من نصوص Python النصية الخاصة بنا ملفًا مصدرًا للعمل. لتحميل ملف ، ما عليك سوى النقر فوق الزر "تحميل".
بمجرد الانتهاء من الإعداد ، يمكنك البدء في اختبار نصوص Python النصية التالية.
النص 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)
البرنامج النصي 2: اكتب أوصاف meta مجمعة
على الرغم من أن الأوصاف التعريفية ليست عامل ترتيب مباشر ، إلا أنها تساعدنا على تحسين معدلات النقر إلى الظهور العضوية. يؤدي ترك أوصاف meta فارغة إلى زيادة فرص إنشاء Google لوصفها الخاص.
إذا أظهر تدقيق مُحسّنات محرّكات البحث لديك عددًا كبيرًا من عناوين 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-grams
N-grams ليست مفهومًا جديدًا ولكنها لا تزال مفيدة لتحسين محركات البحث. يمكن أن تساعدنا في فهم الموضوعات عبر مجموعات كبيرة من بيانات الكلمات الرئيسية.
كيف يعمل هذا البرنامج النصي
ينتج عن هذا البرنامج النصي ملف TXT يقوم بتقسيم الكلمات الرئيسية إلى أحادي وأحرف كبيرة وأحرف ثلاثية الأبعاد.
- أولاً ، يقوم باستيراد ملف TXT لجميع كلماتك الرئيسية (keyword.txt).
- ثم يستخدم مكتبة Python تسمى Counter لتحليل واستخراج N-grams.
- ثم يقوم بتصدير النتائج في ملف 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: تجميع الكلمات الأساسية في مجموعات المواضيع
مع مشاريع تحسين محركات البحث الجديدة ، يكون البحث عن الكلمات الرئيسية دائمًا في المراحل الأولى. نتعامل أحيانًا مع آلاف الكلمات الرئيسية في مجموعة بيانات ، مما يجعل التجميع أمرًا صعبًا.
تتيح لنا Python تجميع الكلمات الرئيسية تلقائيًا في مجموعات مماثلة لتحديد اتجاهات الاتجاه وإكمال تعيين الكلمات الرئيسية لدينا.
كيف يعمل هذا البرنامج النصي
- يقوم هذا البرنامج النصي أولاً باستيراد ملف TXT للكلمات الأساسية (keywords.txt).
- ثم يقوم البرنامج النصي بتحليل الكلمات الأساسية باستخدام TfidfVectorizer و 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) وقائمة مواضيع (topic.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)
العمل مع Python لتحسين محركات البحث
Python هي أداة قوية ومتعددة الاستخدامات بشكل لا يصدق لمحترفي تحسين محركات البحث (SEO).
سواء كنت مبتدئًا أو ممارسًا متمرسًا ، فإن النصوص المجانية التي شاركتها في هذه المقالة تقدم نقطة انطلاق رائعة لاستكشاف إمكانيات Python في تحسين محركات البحث.
بفضل تركيبتها البديهية ومجموعة كبيرة من المكتبات ، يمكن أن تساعدك Python على أتمتة المهام الشاقة وتحليل البيانات المعقدة واكتساب رؤى جديدة حول أداء موقع الويب الخاص بك. فلماذا لا تجربها؟
حظًا سعيدًا ، وترميزًا سعيدًا!
الآراء المعبر عنها في هذه المقالة هي آراء المؤلف الضيف وليست بالضرورة آراء محرك البحث. مؤلفو طاقم العمل مدرجون هنا.