0Pricing
Python Academy · Ders

JavaScript ve Tarama Karşıtı Önlemleri Ele Alma

JS ile oluşturulan içerik ve istek hızı sınırlaması için Playwright/Selenium kullanın.

JavaScript ve Tarama Karşıtı Önlemleri Ele Alma, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

JavaScript Neden Önemlidir

Modern web siteleri, sayfa yüklendikten sonra içeriği JavaScript ile oluşturur. requests+BS4 gibi statik HTML kazıyıcıları, oluşturulmuş DOM'u değil, yalnızca iskeleti görür.

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

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

Python için Playwright

Playwright gerçek bir tarayıcıyı (Chromium, Firefox, WebKit) programlı olarak denetler. İçeriği çıkarmadan önce JavaScript'in çalışmasını bekler.

# 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())

Öğeleri Bekleme

Veri çıkarmadan önce DOM'da bir öğe görünene kadar beklemek için page.wait_for_selector() kullanın.

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, daha eski bir tarayıcı otomasyonu kitaplığıdır. Daha iyi asenkron desteği ve hızı nedeniyle yeni projelerde Playwright tercih edilir.

# 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()

Başsız Mod

Sunucu tarafında kazıma yapmak için tarayıcıları başsız modda (görünür bir pencere olmadan) çalıştırın.

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()

Ağ İsteklerini Yakalama

Playwright, ağ isteklerini yakalayıp mock'layabilir; bu özellik reklamları ve izleyicileri engellemek veya API yanıtlarını doğrudan yakalamak için kullanışlıdır.

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

İstek Hızı Sınırlama ve Gecikmeler

İnsan davranışını taklit edin: istekler arasına rastgele gecikmeler ekleyin ve bot karşıtı sistemleri tetiklememek için hızı sınırlayın.

import time, random

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

Kullanıcı Aracısı Döndürme

Varsayılan kazıyıcı UA'sına göre engellenmekten kaçınmak için Kullanıcı Aracısı dizelerini değiştirerek kullanın.

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)})

Çerezler ve Oturumlar

İstekler arasında oturumun açık kalmasını sağlamak için oturum çerezlerini koruyun. Hem requests Session hem de Playwright çerezleri otomatik olarak yönetir.

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 ve Hukuki Hususlar

CAPTCHA'lar bot karşıtı önlemlerdir. Bunları programlı olarak çözmek (2captcha, anti-captcha) teknik açıdan mümkün olsa da etik ve hukuki kaygılar doğurur. Kazıma yapmadan önce sitenin robots.txt dosyasını ve Hizmet Koşulları'nı mutlaka inceleyin.

# 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

Playwright ile Ekran Görüntüsü ve PDF

Playwright, sayfaların ekran görüntüsünü alabilir veya sayfaları PDF olarak yazdırabilir; bu özellik görsel testler ve arşivleme için kullanışlıdır.

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()

Hızlı Kontrol

requests + BeautifulSoup neden birçok modern web sitesinde başarısız olur?

Özet

JavaScript ile oluşturulan sayfalar için Playwright veya Selenium kullanın. Sunucularda başsız modda çalıştırın. Engellenmekten kaçınmak için gecikmeler ekleyin ve Kullanıcı Aracılarını döndürün. İzleyicileri engellemek için ağ isteklerini yakalayın. robots.txt dosyasına ve Hizmet Koşulları'na her zaman uyun.

Sıkça Sorulan Sorular

“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersi ücretsiz mi?

Evet — “JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersinde ne öğreneceğim?

JS ile oluşturulan içerik ve istek hızı sınırlaması için Playwright/Selenium kullanın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“JavaScript ve Tarama Karşıtı Önlemleri Ele Alma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. requests ve httpx ile HTTP İstekleri
  2. BeautifulSoup ile HTML Ayrıştırma
  3. Scrapy Örümceği Oluşturma
  4. JavaScript ve Tarama Karşıtı Önlemleri Ele Alma
← Python Academy Sayfasına Dön