Mengendalikan JavaScript dan Langkah Antipengikisan
Gunakan Playwright/Selenium untuk kandungan terhasil JS dan pengehad kadar.
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 fasterPengehadan 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 delayPemutaran 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 hitsTangkapan 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.
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
- Permintaan HTTP dengan requests dan httpx
- Menghuraikan HTML dengan BeautifulSoup
- Membina Spider Scrapy
- Mengendalikan JavaScript dan Langkah Antipengikisan