Python Academy · Pelajaran

Mengendalikan JavaScript dan Langkah Antipengikisan

Gunakan Playwright/Selenium untuk kandungan terhasil JS dan pengehad kadar.

Pelajaran 4 daripada 413 langkah

Mengendalikan JavaScript dan Langkah Antipengikisan ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Mengapa JavaScript Penting

Laman web moden merender kandungan menggunakan JavaScript selepas halaman dimuatkan. Pengikis HTML statik seperti requests+BS4 hanya melihat rangka, bukan DOM yang dirender.

# Static scraper sees:
# <div id="app"></div>

# Rendered page has:
# <div id="app">
#   <h1>Product List</h1>
#   <ul>... dynamically loaded items ...</ul>
# </div>

Playwright untuk Python

Playwright mengawal pelayar sebenar (Chromium, Firefox, WebKit) secara programatik. Ia menunggu JavaScript dilaksanakan sebelum mengekstrak kandungan.

# pip install playwright
# playwright install
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com")
        title = await page.inner_text("h1")
        print(title)
        await browser.close()

asyncio.run(main())

Menunggu Elemen

Gunakan page.wait_for_selector() untuk menunggu sehingga elemen muncul dalam DOM sebelum mengekstrak data.

from playwright.async_api import async_playwright
import asyncio

async def scrape():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://spa-example.com")
        await page.wait_for_selector(".product-list")
        items = await page.query_selector_all(".product-item")
        texts = [await i.inner_text() for i in items]

Selenium

Selenium ialah pustaka automasi pelayar yang lebih lama. Playwright lebih disarankan untuk projek baharu kerana sokongan tak segerak dan kelajuan yang lebih baik.

# pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://example.com")
elem = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "h1"))
)
print(elem.text)
driver.quit()

Mod Tanpa Kepala

Jalankan pelayar dalam mod tanpa kepala (tanpa tetingkap yang kelihatan) untuk pengikisan pada bahagian pelayan.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)  # no window
        page = await browser.new_page()
        await page.goto("https://example.com")
        html = await page.content()
        await browser.close()

Memintas Permintaan Rangkaian

Playwright boleh memintas dan meniru permintaan rangkaian, yang berguna untuk menyekat iklan atau penjejak serta menangkap respons API secara terus.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()

        await page.route("**/*.{png,jpg,css}", lambda route: route.abort())
        await page.goto("https://example.com")   # loads 3x faster

Pengehadan Kadar dan Kelewatan

Tiru tingkah laku manusia: tambahkan kelewatan rawak antara permintaan dan hadkan kadarnya supaya tidak mencetuskan sistem antipengikisan bot.

import time, random

def polite_scrape(urls):
    for url in urls:
        fetch(url)
        time.sleep(random.uniform(1, 3))  # 1-3 s random delay

Pemutaran User-Agent

Putar rentetan User-Agent untuk mengelakkan sekatan berdasarkan UA pengikis lalai.

import requests, random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
]

def fetch(url):
    return requests.get(url, headers={"User-Agent": random.choice(USER_AGENTS)})

Kuki dan Sesi

Kekalkan kuki sesi supaya anda kekal log masuk merentas permintaan. Kedua-dua requests Session dan Playwright mengendalikan kuki secara automatik.

import requests

with requests.Session() as s:
    s.post("https://example.com/login", data={"user":"me","pass":"pw"})
    # session cookie kept automatically:
    dashboard = s.get("https://example.com/dashboard")

CAPTCHA dan Pertimbangan Undang-undang

CAPTCHA ialah langkah antipengikisan bot. Menyelesaikannya secara programatik boleh dilakukan (2captcha, anti-captcha), tetapi menimbulkan kebimbangan etika dan undang-undang. Sentiasa semak robots.txt dan Syarat Perkhidmatan laman tersebut sebelum melakukan pengikisan.

# Before scraping:
# 1. Check robots.txt: https://example.com/robots.txt
# 2. Review the Terms of Service for "scraping" or "automated access" clauses
# 3. Only scrape public data
# 4. Honour Crawl-delay directives
# 5. Cache responses to avoid repeated hits

Tangkapan Skrin dan PDF Playwright

Playwright boleh mengambil tangkapan skrin atau mencetak halaman kepada PDF — berguna untuk ujian visual dan pengarkiban.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com")
        await page.screenshot(path="page.png", full_page=True)
        await page.pdf(path="page.pdf")
        await browser.close()

Semakan Pantas

Mengapakah requests + BeautifulSoup gagal pada banyak laman web moden?

Ringkasan

Gunakan Playwright atau Selenium untuk halaman yang dirender oleh JavaScript. Jalankan dalam mod tanpa kepala untuk pelayan. Tambahkan kelewatan dan putar User-Agent untuk mengelakkan sekatan. Pintas permintaan rangkaian untuk menyekat penjejak. Sentiasa hormati robots.txt dan Syarat Perkhidmatan.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Mengendalikan JavaScript dan Langkah Antipengikisan” percuma?

Ya — teks penuh “Mengendalikan JavaScript dan Langkah Antipengikisan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengendalikan JavaScript dan Langkah Antipengikisan”?

Gunakan Playwright/Selenium untuk kandungan terhasil JS dan pengehad kadar. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Mengendalikan JavaScript dan Langkah Antipengikisan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Permintaan HTTP dengan requests dan httpx
  2. Menghuraikan HTML dengan BeautifulSoup
  3. Membina Spider Scrapy
  4. Mengendalikan JavaScript dan Langkah Antipengikisan
← Kembali ke Python Academy