5 สคริปต์ Python สำหรับงาน SEO อัตโนมัติ

เผยแพร่แล้ว: 2023-04-12

Python เป็นภาษาโปรแกรมที่มีประสิทธิภาพซึ่งได้รับความนิยมในอุตสาหกรรม SEO ในช่วงไม่กี่ปีที่ผ่านมา

ด้วยไวยากรณ์ที่ค่อนข้างง่าย ประสิทธิภาพที่มีประสิทธิภาพ และไลบรารี่และเฟรมเวิร์กที่มีอยู่มากมาย Python ได้ปฏิวัติจำนวน SEO ที่เข้าใกล้งานของพวกเขา

Python นำเสนอชุดเครื่องมืออเนกประสงค์ที่สามารถช่วยให้กระบวนการเพิ่มประสิทธิภาพเร็วขึ้น แม่นยำขึ้น และมีประสิทธิภาพมากขึ้น

บทความนี้จะสำรวจสคริปต์ Python 5 ตัวเพื่อช่วยเพิ่มความพยายามในการทำ SEO ของคุณ

  • ทำแผนที่เปลี่ยนเส้นทางโดยอัตโนมัติ
  • เขียนคำอธิบายเมตาเป็นกลุ่ม
  • วิเคราะห์คำหลักด้วย N-grams
  • จัดกลุ่มคำหลักเป็นกลุ่มหัวข้อ
  • จับคู่รายการคำหลักกับรายการหัวข้อที่กำหนดไว้ล่วงหน้า

วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งาน Python

หากคุณกำลังมองหาการเขียนโปรแกรม Python Google Colab ก็คุ้มค่าที่จะพิจารณา

เป็นแพลตฟอร์มบนเว็บฟรีที่ให้สนามเด็กเล่นที่สะดวกสำหรับการเขียนและเรียกใช้โค้ด Python โดยไม่จำเป็นต้องตั้งค่าในเครื่องที่ซับซ้อน

โดยพื้นฐานแล้ว จะช่วยให้คุณเข้าถึง Jupyter Notebooks ภายในเบราว์เซอร์ของคุณ และจัดเตรียมโฮสต์ของไลบรารี่ที่ติดตั้งไว้ล่วงหน้าสำหรับวิทยาการข้อมูลและการเรียนรู้ของเครื่อง

นอกจากนี้ยังสร้างขึ้นบน Google ไดรฟ์ คุณจึงสามารถบันทึกและแบ่งปันงานของคุณกับผู้อื่นได้อย่างง่ายดาย

ในการเริ่มต้น ให้ทำตามขั้นตอนเหล่านี้:

เปิดใช้งานการอัปโหลดไฟล์

เมื่อคุณเปิด 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: เขียนคำอธิบายเมตาเป็นกลุ่ม

แม้ว่าคำอธิบายเมตาจะไม่ใช่ปัจจัยในการจัดอันดับโดยตรง แต่ก็ช่วยให้เราปรับปรุงอัตราการคลิกผ่านทั่วไปของเราได้ การเว้นคำอธิบายเมตาว่างไว้จะเพิ่มโอกาสที่ Google จะสร้างเอง

หากการตรวจสอบ SEO ของคุณแสดง 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 ไม่ใช่แนวคิดใหม่ แต่ก็ยังมีประโยชน์สำหรับ SEO พวกเขาสามารถช่วยให้เราเข้าใจธีมของชุดข้อมูลคำหลักจำนวนมาก

N-กรัม

สคริปต์นี้ทำงานอย่างไร

สคริปต์นี้แสดงผลเป็นไฟล์ TXT ที่แบ่งคำหลักออกเป็น unigrams, bigrams และ trigrams

  • ขั้นแรก จะนำเข้าไฟล์ 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: จัดกลุ่มคำหลักเป็นกลุ่มหัวข้อ

ด้วยโครงการ SEO ใหม่ การวิจัยคำหลักมักจะอยู่ในช่วงเริ่มต้นเสมอ บางครั้งเราจัดการกับคำหลักหลายพันรายการในชุดข้อมูล ทำให้การจัดกลุ่มเป็นเรื่องท้าทาย

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: จับคู่รายการคำหลักกับรายการหัวข้อที่กำหนดไว้ล่วงหน้า

ซึ่งคล้ายกับสคริปต์ก่อนหน้านี้ เว้นแต่จะช่วยให้คุณสามารถจับคู่รายการคำหลักกับชุดหัวข้อที่กำหนดไว้ล่วงหน้าได้

วิธีนี้เหมาะสำหรับคีย์เวิร์ดชุดใหญ่เพราะประมวลผลเป็นชุดๆ ละ 1,000 คำเพื่อป้องกันระบบล่ม

สคริปต์นี้ทำงานอย่างไร

  • สคริปต์นี้นำเข้ารายการคำหลัก (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)

การทำงานกับ Python สำหรับ SEO

Python เป็นเครื่องมือที่ทรงพลังและหลากหลายอย่างเหลือเชื่อสำหรับมืออาชีพด้าน SEO

ไม่ว่าคุณจะเป็นมือใหม่หรือผู้มีประสบการณ์ สคริปต์ฟรีที่ฉันแบ่งปันในบทความนี้เป็นจุดเริ่มต้นที่ดีสำหรับการสำรวจความเป็นไปได้ของ Python ใน SEO

ด้วยไวยากรณ์ที่ใช้งานง่ายและคลังข้อมูลมากมาย Python สามารถช่วยคุณทำงานที่น่าเบื่อหน่ายโดยอัตโนมัติ วิเคราะห์ข้อมูลที่ซับซ้อน และได้รับข้อมูลเชิงลึกใหม่ๆ เกี่ยวกับประสิทธิภาพเว็บไซต์ของคุณ ทำไมไม่ลองดูล่ะ

ขอให้โชคดีและมีความสุขในการเขียนโค้ด!


ความคิดเห็นที่แสดงในบทความนี้เป็นความคิดเห็นของผู้เขียนรับเชิญและไม่จำเป็นต้องเป็น Search Engine Land ผู้เขียนเจ้าหน้าที่อยู่ที่นี่