Python SEO ดึงข้อมูลเว็บและบันทึกลง Google Sheets แบบอัตโนมัติ


Son contentmastery.io
Updated: Dec. 7, 2024


การทำ SEO ในปัจจุบันต้องอาศัยการวิเคราะห์ข้อมูลจำนวนมาก ซึ่งการทำด้วยมืออาจใช้เวลานานและเกิดข้อผิดพลาดได้ง่าย บทความนี้จะแนะนำวิธีการใช้ Python เพื่อช่วยในการดึงข้อมูล SEO จากเว็บไซต์และบันทึกลง Google Sheets แบบอัตโนมัติ เหมาะสำหรับ SEO specialists และ Digital Marketers ที่ต้องการเพิ่มประสิทธิภาพในการทำงาน




สิ่งที่ต้องเตรียม

  1. Python (version 3.6 ขึ้นไป)
  2. Google Cloud Console Account
  3. Google Sheets ที่พร้อมใช้งาน
  4. Text Editor หรือ IDE (แนะนำ VS Code)

Note: วิธีการดาวน์โหลดและติดตั้ง Python


Step 1: เตรียม Google Sheets API

ก่อนเริ่มเขียนโค้ด เราต้องเตรียม API และ Credentials ให้พร้อม:

1. ไปที่ Google Cloud Console (https://console.cloud.google.com)
2. เสร็จแล้วทำการสร้างโปรเจคใหม่และตั้งชื่อโปรเจคท์ให้เรียบร้อยครับ


3. เสร็จแล้วตรงช่องเสิร์ชให้ค้นหา Google Sheets API และทำการ
เปิดใช้งาน (Enable)



4. สร้าง Credentials โดยคลิก

  1. "+CREATE CREDENTIALS"
  2. จากนั้น "OAuth client ID"
  3. เสร็จแล้วเลือก application แบบ "Desktop app"


เลือก Desktop app


ตั้งชื่อแล้ว "CREATE" ได้เลยครับ


เรียบร้อย



เสร็จแล้วดาวน์โหลดไฟล์ client_secrets.json เก็บไว้ในโฟลเดอร์โปรเจคท์



ทำการสร้างโปรเจคท์บน Google Cloud Console


เสร็จแล้วสร้าง Sheet ไฟล์เปล่า ๆ ของเราขึ้นมา โดยเราจะนำ Sheet ID นี่แหละครับไปใช้ในการเขียนโค้ดเพื่อเชื่อมต่อในลำดับถัดไปโดยในภาพ URL คือ

https://docs.google.com/spreadsheets/d/1cFMXiEOfeffRlr8Xenjz1IJHYX46Q0nUpLGF_ayPLuw
/edit?gid=0#gid=0

เราจะได้ Sheet ID คือ 1cFMXiE...ayPLuw



โครงสร้างของโปรเจคท์

โปรเจคท์นี้จะสร้างโฟลเดอร์ชื่อโปรเจคท์ชื่อ python-seo แล้วจะมีไฟล์ 2 ไฟล์ในโฟลเดอร์คือ

  1. main.py: เป็นไฟล์สำหรับเขียน Python script นั่นเองครับ
  2. client_secrets.json: เป็นไฟล์ที่เก็บ credentials ต่าง ๆ ไว้ให้ Python สามารถพูดคุยกับ Google Sheets ได้ผ่าน API
└── python-seo
    ├── main.py
    └── client_secrets.json



Step 2: การติดตั้ง Libraries


เปิด Terminal และติดตั้ง packages ที่จำเป็น ด้วย package manager ของ Python อย่าง PIP

pip install requests beautifulsoup4 google-auth-oauthlib google-auth-httplib2 google-api-python-client



Step 3: เริ่มเขียนโค้ด

3.1 การ Import Libraries ที่จำเป็น

ทำการ import ไลบรารีที่จำเป็นต้องใช้ใน script นี้ครับ

import os
import requests
from bs4 import BeautifulSoup
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import pickle



3.2 ดึงข้อมูลจากเว็บไซต์

ฟังก์ชันนี้ทำหน้าที่ดึงข้อมูล HTML จากเว็บไซต์ โดยใช้ User-Agent เพื่อป้องกันการถูกบล็อก

def scrape_website(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        return soup
    else:
        print(f"เกิดข้อผิดพลาด: {response.status_code}")
        return None


3.3 แยกข้อมูล SEO Tags ที่ต้องการ

ฟังก์ชันนี้จะแยกข้อมูล SEO ที่สำคัญจาก HTML ได้แก่ title, meta description, h1, h2, จำนวนลิงก์และรูปภาพ

def extract_seo_data(soup):
    seo_data = {
        'title': soup.title.text if soup.title else '',
        'meta_description': soup.find('meta', {'name': 'description'})['content']
            if soup.find('meta', {'name': 'description'}) else '',
        'h1_tags': [h1.text for h1 in soup.find_all('h1')],
        'h2_tags': [h2.text for h2 in soup.find_all('h2')],
        'links': len(soup.find_all('a')),
        'images': len(soup.find_all('img'))
    }
    return seo_data


3.4 เชื่อมต่อ Google Sheets

ฟังก์ชันนี้จัดการการเชื่อมต่อกับ Google Sheets API และการจัดการ authentication

def connect_to_sheets():
    SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secrets.json', SCOPES)
            creds = flow.run_local_server(port=0)
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)
    service = build('sheets', 'v4', credentials=creds)
    return service


3.5 อัพเดทข้อมูลลง Sheet

เขียนฟังก์ชันเพื่ออัปเดตข้อมูลที่ scrape ได้ลงบน Google Sheets เพื่อนำไปใช้งานต่อไป

def update_sheet(service, spreadsheet_id, range_name, values):
    body = {
        'values': values
    }
    result = service.spreadsheets().values().update(
        spreadsheetId=spreadsheet_id,
        range=range_name,
        valueInputOption='USER_ENTERED',
        body=body
    ).execute()
    return result



3.6 ฟังก์ชัน Main และการรันโปรแกรม

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

def main():
    urls = [
        'https://moz.com/',
        'https://www.searchenginejournal.com/',
        'https://www.semrush.com/blog/',
        # เพิ่ม URLs ตามต้องการ
    ]
    
    all_data = []
    for url in urls:
        soup = scrape_website(url)
        if soup:
            seo_data = extract_seo_data(soup)
            all_data.append([
                url,
                seo_data['title'],
                seo_data['meta_description'],
                ', '.join(seo_data['h1_tags']),
                seo_data['links'],
                seo_data['images']
            ])
    
    service = connect_to_sheets()
    SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID'  # ใส่ ID ของ Sheet ของคุณ
    RANGE_NAME = 'Sheet1!A2:F'
    update_sheet(service, SPREADSHEET_ID, RANGE_NAME, all_data)

if __name__ == '__main__':
    main()


จากนั้นทำการรันโค้ดด้วยคำสั่ง file_name.py เช่น ถ้าเราตั้งชื่อไฟล์ชื่อ main.py ก็รันเป็น python main.py

ยืนยันตัวตนสำเร็จ


เปิดดู Google Sheets ของเรา


เห็นไหมครับ นี่คือข้อมูลที่เราไป scrape มาถูก save ลง Google Sheets เรียบร้อย เราสามารถนำข้อมูลไปวิเคราะห์หรือใช้งานต่อได้เลย

Tips สำหรับการใช้งาน

  • การจัดการ Sheet: ควรสร้างหัวตาราง (header) ใน Google Sheets ให้ตรงกับข้อมูลที่จะดึง
  • การเพิ่มข้อมูล: สามารถเพิ่มการดึงข้อมูลอื่น ๆ เช่น canonical tags, robots meta ตามที่เราต้องการ
  • การจัดการ Error: ควรเพิ่ม try-except เพื่อจัดการกรณีเว็บไซต์ไม่มีการ response
  • การทำ Automation: สามารถใช้ cron job เพื่อรันโค้ดอัตโนมัติแบบตั้งเวลาไว้ โดยที่เราไม่ต้องรันแบบ manual ทีละครั้ง

ข้อควรระวัง

  • Rate Limiting: ควรเพิ่ม time.sleep() ระหว่างการดึงข้อมูลแต่ละเว็บ
  • robots.txt: ตรวจสอบ robots.txt ก่อนดึงข้อมูล
  • Credentials: เก็บไฟล์ client_secrets.json ให้ปลอดภัย
  • Sheet Permissions: ต้องมีสิทธิ์ในการแก้ไข Google Sheets

การนำไปประยุกต์ใช้

  1. Competitor Analysis: ใช้วิเคราะห์โครงสร้างเว็บไซต์คู่แข่ง
  2. Content Audit: ตรวจสอบการใช้ headers และ meta tags
  3. Technical SEO: เพิ่มการตรวจสอบ technical issues
  4. Reporting: สร้างรายงาน SEO อัตโนมัติ


สรุป

โค้ดนี้เป็นพื้นฐานที่ดีสำหรับการเริ่มต้นใช้ Python ในงาน SEO สามารถนำไปพัฒนาต่อยอดให้เหมาะกับความต้องการได้ เช่น เพิ่มการวิเคราะห์ content, ตรวจสอบ performance หรือเชื่อมต่อกับ APIs อื่น ๆ

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

สำหรับเพื่อน ๆ สมาชิกที่อยากเข้าใจการทำงาน Technical SEO เต็มรูปแบบและเข้าใจการเขียน coding script ต่าง ๆ เพื่อนำไปประยุกต์ใช้ในงานด้าน SEO และ Digital Marketing ต่อไป ตอนนี้คลาส 📒 Complete Web Marketing & Technical SEO ยังว่าง 1 ที่นั่งสุดท้ายนะครับ


Son contentmastery.io
Son contentmastery.io

ที่ปรึกษาด้าน Web & SEO สำหรับองค์กรและเจ้าของธุรกิจ ชอบเขียนและแชร์ความรู้ เชื่อว่าความรู้คือสิ่งที่มีมูลค่ามากที่สุดและจะติดตัวเราไปในทุกที่ ให้อะไรก็คงไม่เท่าให้ความรู้ หลงไหลในธรรมชาติและการเดินทาง เป็นพ่อของแงว ๆ อยู่หลายตัว เสพติดกาแฟ อเมริกาโน่


อัพสกิล SEO & Web Marketing?

ลดระยะเวลาลองผิดลองถูกด้วยตัวเอง เรียน SEO ด้วยแนวทางปฎิบัติที่ดีที่สุด (Best Practices) สอนครอบคลุมในทุกมิติ ทั้งด้าน On-Page, Technical, Web Analytics & Report ฯลฯ เพื่อให้ผู้เรียนไปต่อยอดกับเว็บไซต์ธุรกิจของตัวเองได้อย่างเต็มประสิทธิภาพ เหมาะสำหรับองค์กร บริษัทต่าง ๆ