DeepSeek: غول جدید هوش مصنوعی از چین
Sun, 02 Feb 2025

داستان های دانشگاهیان و اکتشافات تحقیقاتی آنها را دنبال کنید
Web Scraping یکی از تکنیکهای مهم در دنیای برنامهنویسی است که برای جمعآوری داده از وبسایتها استفاده میشود. اما بسیاری از سایتها با استفاده از روشهایی مانند CAPTCHA، محدودیت نرخ درخواست (Rate Limiting) و بلاک کردن IP، جلوی اسکرپینگ را میگیرند. در این مقاله، روشهایی را برای انجام Web Scraping بدون بلاک شدن با استفاده از دو ابزار قدرتمند Playwright و Scrapy بررسی میکنیم.
Web Scraping فرآیندی است که طی آن دادهها از صفحات وب استخراج شده و در قالبهای قابل استفاده مانند JSON، CSV یا پایگاه داده ذخیره میشوند. ابزارهایی مانند BeautifulSoup، Selenium، Scrapy و Playwright برای این کار استفاده میشوند.
وبسایتها معمولاً به دلایل زیر Web Scraping را مسدود میکنند:
برای انجام وب اسکرپینگ بدون بلاک شدن، باید از تکنیکهای مختلفی استفاده کنیم:
وبسایتها User-Agent را برای شناسایی نوع مرورگر شما بررسی میکنند. استفاده از یک User-Agent پویا به شما کمک میکند تا کمتر شناسایی شوید.
مثال در Scrapy:
import scrapy
class MySpider(scrapy.Spider):name = "my_spider"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}def start_requests(self):yield scrapy.Request("https://example.com", headers=self.headers)
با استفاده از پروکسیهای چرخشی میتوان IP خود را تغییر داد تا سایت نتواند شما را بلاک کند.
نمونه استفاده از Proxy در Scrapy:
proxy = "http://username:password@proxyserver:port"
yield scrapy.Request(url, meta={"proxy": proxy})
ارسال درخواستهای متوالی و سریع میتواند شما را بهعنوان یک Bot شناسایی کند. بهتر است بین درخواستها تاخیر تصادفی ایجاد کنیم.
در Scrapy:
import time
import randomtime.sleep(random.uniform(2, 5))
Headless Browsers مانند Playwright و Selenium به شما اجازه میدهند تا مانند یک کاربر واقعی با وبسایتها تعامل داشته باشید.
نمونه استفاده از Playwright:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page()page.goto("https://example.com")print(page.content())browser.close()
ویژگی | Scrapy | Playwright |
---|---|---|
سرعت | بسیار سریع | کندتر به دلیل رندر کامل صفحات |
پشتیبانی از جاوااسکریپت | ندارد | بله، بهطور کامل |
مدیریت کپچا | سخت | آسانتر با تعاملات کاربر |
پروکسی و چرخش IP | بله | بله |
اگر سایت هدف مبتنی بر جاوااسکریپت باشد، بهتر است از Playwright استفاده کنید. اما برای سایتهای معمولی، Scrapy سریعتر و کارآمدتر است.
برای عبور از CAPTCHA روشهای زیر پیشنهاد میشود:
نمونه در Playwright:
page.locator("#captcha_input").fill("پاسخ کپچا")
پس از جمعآوری دادهها، میتوان آنها را در پایگاه داده، CSV یا JSON ذخیره کرد.
ذخیره در JSON:
import json
data = {"title": "عنوان مقاله", "content": "متن مقاله"}with open("data.json", "w") as f:json.dump(data, f)
انجام Web Scraping بدون بلاک شدن نیازمند استفاده از پروکسیها، User-Agentهای متنوع، Headless Browsers و تاخیرهای تصادفی است. ابزارهای Scrapy و Playwright بهترین گزینهها برای استخراج داده از وبسایتها هستند. با رعایت این نکات، میتوانید دادهها را بدون مسدود شدن جمعآوری کنید!
آیا تجربهای در این زمینه دارید؟ نظرات خود را با ما به اشتراک بگذارید!
Sun, 02 Feb 2025
Sat, 01 Feb 2025
Sat, 01 Feb 2025
نظر بدهید