Internal link adalah salah satu pilar utama dalam Technical SEO yang sering kali terlupakan. Padahal, struktur link yang solid bukan hanya membantu Googlebot melakukan crawling dengan lebih efisien, tapi juga mendistribusikan link equity (referensi) ke halaman-halaman penting di website kita.
Melakukan audit internal link secara manual tentu sangat melelahkan, apalagi jika jumlah halamannya mencapai ratusan bahkan ribuan. Maka dari itu, kita butuh cara yang lebih cerdas dan cepat.
Dalam artikel kali ini, saya akan berbagi script Python sederhana untuk membantumu mengekstrak semua link beserta anchor text-nya secara otomatis.
Persiapan Sebelum Memulai
Untuk menjalankan script ini, pastikan kamu sudah menginstal beberapa library Python berikut:
pip install requests beautifulsoup4 pandas
-
Requests: Untuk mengambil data HTML dari URL.
-
BeautifulSoup: Untuk melakukan parsing atau membedah elemen HTML.
-
Pandas: Untuk mengolah data dan menyimpannya ke format CSV.
Python Script: Internal Link Extractor
Kamu bisa mengunduh script ini dari github repo-ku. Script ini akan membaca daftar URL dari file CSV, mengambil semua link yang ada di halaman tersebut, dan menyimpannya kembali ke file CSV baru.
Cara Kerja Script Ini
1. Import Library (Persiapan "Alat Perang")
import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib.parse import urljoin
-
requests: Library untuk melakukan HTTP request. Bayangkan ini seperti browser yang memanggil sebuah URL untuk mendapatkan kode HTML-nya. -
BeautifulSoup: Ini adalah "pisau bedah" kita. Library ini akan mengubah tumpukan kode HTML yang berantakan menjadi struktur data yang bisa kita cari elemen-elemennya (seperti tag<a>,<h1>, dsb). -
pandas: Library standar untuk olah data (Data Science). Di sini fungsinya untuk membaca file CSV dan menyimpannya kembali dengan rapi. -
urljoin: Fungsi penting untuk menangani relative URL. Jika script menemukan link/kontak,urljoinakan otomatis mengubahnya menjadihttps://domain.com/kontak.
2. Konfigurasi Path File
INPUT_FILE = "input.csv"
OUTPUT_FILE = "output_links.csv"
Di sini kita menentukan di mana file daftar URL berada (input.csv) dan di mana hasil scraping akan disimpan. Penggunaan huruf r sebelum tanda kutip (string) sangat penting di Windows agar karakter backslash (\) tidak dianggap sebagai error.
3. Loop dan Request (Proses Pengambilan Data)
for url in df["url"]:
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
-
for url in df["url"]: Script akan membaca kolom "url" di CSV kamu satu per satu. -
requests.get(url, timeout=10): Mengambil data dari web. Kita beritimeout=10detik agar script tidak "hang" jika websitenya lambat. -
response.raise_for_status(): Jika URL tersebut error (misal 404 atau 500), baris ini akan menghentikan proses untuk URL tersebut dan lanjut ke blokexcept. -
html.parser: Memberitahu BeautifulSoup bahwa data yang kita berikan adalah dokumen HTML.
4. Ekstraksi Tag Link (<a>)
links = soup.find_all("a")
for link in links:
href = link.get("href")
anchor_text = link.get_text(strip=True)
-
find_all("a"): Mencari semua elemen link di halaman tersebut. -
link.get("href"): Mengambil isi dari atributhref(tujuan link). -
link.get_text(strip=True): Mengambil teks yang diklik oleh user (anchor text). Fungsistrip=Truedigunakan untuk membersihkan spasi kosong atau baris baru yang tidak perlu.
5. Konversi dan Penyimpanan Data
if href:
full_url = urljoin(url, href)
results.append({
"source_page": url,
"link_url": full_url,
"anchor_text": anchor_text
})
-
if href:: Memastikan kita hanya memproses tag<a>yang memang punya link (menghindari link kosong). -
results.append(...): Kita memasukkan data (URL asal, URL tujuan, dan teksnya) ke dalam sebuah "keranjang" besar bernamaresultsdalam bentuk dictionary.
6. Export ke CSV
output_df = pd.DataFrame(results)
output_df.to_csv(OUTPUT_FILE, index=False)
Setelah semua URL selesai diperiksa, semua data di dalam "keranjang" results diubah menjadi tabel (DataFrame) oleh Pandas, lalu disimpan menjadi file CSV baru tanpa menyertakan kolom index angka di sebelah kiri (index=False).
Apa yang Harus Dilakukan Setelahnya?
Setelah mendapatkan file output_links.csv, kamu bisa melakukan beberapa hal:
-
Cek Anchor Text: Apakah ada banyak link dengan tulisan "klik di sini" atau "baca selengkapnya"? Jika iya, segera ganti dengan kata kunci yang lebih deskriptif.
-
Identifikasi Broken Links: Kamu bisa mengembangkan script ini lebih lanjut untuk mengecek status code (200, 404, atau 301) dari setiap link yang ditemukan.
-
Analisis Kedalaman Link: Pastikan halaman penting tidak terkubur terlalu dalam dari homepage.
Menggunakan Python untuk kebutuhan Technical SEO seperti ini akan sangat menghemat waktumu. Jika ada pertanyaan mengenai script di atas atau ada kendala saat mencoba, jangan ragu untuk berdiskusi dengan saya di LinkedIn ya!
Selamat mencoba!




