רוב המדריכים על "gemini web scraping" מרגישים כאילו נכתבו עבור אותו אדם בדיוק: מפתח Python שכבר יש לו virtual environment, סכימת Pydantic, ודעה נחרצת על ספריות async. אם זה אתם — מעולה, נגיע גם לקוד. אבל אם אתם אנשי מכירות, שיווק או תפעול באיקומרס ורק רוצים נתונים מובנים מכמה דפי אינטרנט בלי ללמוד מה עושה markdownify, אתם ממש לא לבד.
Gemini הוא משפחת מודלי ה-AI המולטי-מודאליים של Google, והוא הופך מהר לאחד הכלים המובילים לחילוץ נתונים מהאינטרנט. סקר המפתחים של Stack Overflow לשנת 2025 מצא ש-84% מהמפתחים כבר משתמשים בכלי AI או מתכננים להשתמש בהם — וגריטה מבוססת LLM היא חלק גדול מהגל הזה. אבל יש פער אמיתי בין "דמו מגניב על כתובת URL אחת" לבין צינור עבודה שמטפל בעימוד, דפי משנה, חסימות אנטי-בוט ו-HTML מבולגן בקנה מידה גדול. המדריך הזה מכסה גם את מסלול Python (עם קוד) וגם את המסלול ללא קוד, עובר על בחירת מודל עם חישובי טוקנים אמיתיים, מתמודד עם גריטה מרובת דפים (השלב שכמעט כל מדריך אחר מדלג עליו), ומציג בכנות איפה Gemini נתקע. בסוף תדעו איזה מסלול מתאים לזרימת העבודה שלכם — ואיך להימנע מהמלכודות שראיתי מפילות גם מפתחים וגם משתמשים עסקיים.
מהי גריטת אתרים עם Gemini?
גריטת אתרים עם Gemini פירושה הזנה של תוכן דף אינטרנט — HTML, Markdown, או אפילו צילום מסך — לאחד ממודלי Gemini של Google, שמפרש את הדף ומחזיר נתונים מובנים. בלי CSS selectors. בלי XPath. בלי חוקים שבירים שנשברים ברגע שהאתר משנה את הפריסה שלו.
זרימת העבודה הבסיסית נראית כך:
- שולפים את הדף (עם
requests, דפדפן headless או תוסף Chrome) - מנקים וממירים את התוכן (לרוב HTML → Markdown, כדי להוזיל עלויות טוקנים)
- שולחים ל-Gemini עם סכימה שמתארת את השדות שאתם רוצים
- מקבלים JSON מובנה בחזרה — מוכן לגיליון, CRM או מסד נתונים
בהשוואה לגריטה מסורתית עם BeautifulSoup או Selenium, שבה אתם מקודדים selectors כמו div.product-title > span.price ומתפללים שהאתר לא יעשה רידיזיין ביום שלישי הבא, Gemini קורא את הדף כמו אדם: הוא מבין הקשר, מסתגל לשינויים בפריסה, ומתמודד עם עיצוב מבולגן בלי חוקים מותאמים אישית.
ועוד משהו שכדאי לדעת: Gemini הוא מולטי-מודאלי באופן מובנה. הוא יודע לעבד טקסט, תמונות, וידאו, אודיו, PDF וקוד בבקשה אחת. זה פותח אפשרויות גריטה — למשל שליחת צילום מסך במקום HTML — שרוב ה-LLMs האחרים פשוט לא מסוגלים להציע. לזה נגיע בהמשך.
למה גריטת אתרים עם Gemini חשובה לצוותים עסקיים
אם אתם תוהים למה מנהל/ת שיווק או אנליסט/ית איקומרס צריכים בכלל להתעניין ב-LLMs ובגריטת אתרים, הנה התשובה הקצרה: זה חוסך המון זמן, וזה לא נשבר בכל פעם שאתר מתעדכן.
שוק תוכנות גריטת האתרים צפוי לצמוח מכ-1 מיליארד דולר ב-2025 ליותר מ-2 מיליארד דולר עד 2030 — והחלק שצומח הכי מהר הוא חילוץ נתונים מונע-AI. זו לא רק הייפ; זה משקף שינוי אמיתי בדרך שבה צוותים אוספים נתונים.
כך Gemini משתלב בתהליכי עבודה עסקיים יומיומיים:
| תרחיש שימוש | מה גוררים מהאתר | מי נהנה מזה |
|---|---|---|
| יצירת לידים | פרטי קשר מספריות, LinkedIn (ציבורי), ואתרי חברות | מכירות, BDRs |
| ניטור מחירי מתחרים | מחירי מוצרים, זמינות מלאי, מבצעים | איקומרס, צוותי תמחור |
| חילוץ קטלוג מוצרים | שמות, מפרטים, תמונות, ביקורות | מרצ'נדייזינג, תפעול מרקטפלייסים |
| רישומי נדל"ן | פרטי נכס, מחירים, מידע על סוכן | סוכנים, משקיעים |
| איסוף תוכן | חדשות, פוסטים בבלוג, אזכורים ברשתות חברתיות | שיווק, יחסי ציבור |
| מחקר שוק העבודה | כותרות משרות, שכר, מיקומים | משאבי אנוש, גיוס |
היתרון המעשי הוא כפול. ראשית, אתם מדלגים על מחזור אינסופי של כתיבה, בדיקה ודיבוג של סקריפטים לפרסור — המודל קורא את הדף מחדש בכל פעם. שנית, לא צריך לשכור מפתח בכל פעם שאתר מזיז <div>. שכבת החינם של Gemini מאפשרת התנסות כמעט בלי עלות במשימות קטנות: בערך 1,000 בקשות ביום ב-Flash-Lite ו-100 ביום ב-Pro, בלי צורך בכרטיס אשראי.
איזה מודל Gemini כדאי לבחור? (Flash Lite מול Flash מול Pro)
לא כל מודלי Gemini שווים כשזה מגיע לגריטה. זו ההשוואה הפרקטית שהייתי רוצה לראות בכל מדריך, כי בחירה בשכבה הלא נכונה או מבזבזת כסף או מחזירה נתונים גרועים.
כל שלושת מודלי Gemini 2.5 הנוכחיים חולקים חלון הקשר של 1,048,576 טוקנים והם מולטי-מודאליים. ההבדלים הם בעלות, במהירות, וביכולת להתמודד עם חילוץ מורכב.
| מודל | עלות קלט (ל-1M טוקנים) | עלות פלט (ל-1M טוקנים) | הכי מתאים ל | דיוק בסכימות מורכבות | מהירות |
|---|---|---|---|---|---|
| Gemini 2.5 Flash Lite | ~$0.025 | ~$0.10 | נתונים פשוטים ושטוחים, נפח גבוה | ⚠️ מתקשה עם שדות מקוננים/אופציונליים | מהיר ביותר |
| Gemini 2.5 Flash | ~$0.075 | ~$0.625 | רוב משימות הגריטה | ✅ טוב לחילוץ מובנה | מהיר |
| Gemini 2.5 Pro | ~$0.3125 | ~$2.50 | סכימות מקוננות ומורכבות, מקרי קצה | ✅ הדיוק הטוב ביותר | האיטי ביותר |
(המחירים מתוך Gemini Developer API. Batch API זול ב-50% מהתעריפים האלה.)
Gemini 2.5 Flash Lite: מהיר וזול, אבל צריך להיזהר מחוסרים
Flash Lite הוא האופציה התקציבית. הוא אידיאלי לנתונים פשוטים ושטוחים — שמות מוצרים, מחירים, רישומים ברמת שכבה אחת — בנפח גבוה. אבל יש לו בעיות מתועדות עם שדות אופציונליים, חותמות זמן ונתונים מקוננים. מפתח אחד בפורום של Google דיווח ש-Flash Lite "משתגע" כשסכימות כוללות מאפיינים שאינם נדרשים, ומייצר טקסט חוזר עד שמגיעים למגבלת הטוקנים. אם הסכימה שלכם כוללת יותר משתי רמות קינון, או שדות שעשויים להיעדר בחלק מהדפים, Flash Lite ישרוף לכם גם טוקנים וגם סבלנות.
Gemini 2.5 Flash: נקודת האיזון לרוב משימות הגריטה
Flash הוא נקודת ההתחלה שהייתי בוחר כמעט לכל משימת גריטה אמיתית. הוא מטפל היטב בחילוץ מובנה, מסתדר עם לוגיקת עימוד, ועולה בערך פי 3 מ-Flash Lite בצד הקלט — אבל הקפיצה בדיוק שווה את זה. במדדי GPQA-level reasoning, Flash נמצא במרחק של כמה נקודות מ-Pro, כלומר הוא יודע להתמודד עם הסקת מסקנות, נרמול ופישוט נתונים — בדיוק מה שגריטה דורשת בפועל.
Gemini 2.5 Pro: דיוק מקסימלי לנתונים מורכבים
Pro הוא כלי הדיוק. השתמשו בו כשאתם מחלצים סכימות מקוננות עמוקות (למשל: מפרטי מוצר עם כמה קבוצות וריאציות, שכל אחת מהן כוללת מידות, צבעים ומחירים), או כששדות מומצאים פשוט לא באים בחשבון (נתונים משפטיים, פיננסיים או רפואיים). הוא יקר בערך פי 12 מ-Flash Lite בצד הקלט, אז שמרו אותו למשימות שבהן הדיוק חשוב יותר מהמחיר.
דוגמת עלות מעשית: 10,000 דפי מוצר
אם אתם מקדימים עיבוד מ-HTML ל-Markdown (וזה מה שכדאי לעשות — עוד מעט נסביר למה), דף מוצר טיפוסי יורד מכ-20,000 טוקנים של HTML גולמי לכ-4,000 טוקנים של Markdown. פלט JSON הוא בערך 500 טוקנים לדף.
| מודל | עלות קלט (40M טוקנים) | עלות פלט (5M טוקנים) | סה"כ ל-10K דפים |
|---|---|---|---|
| Flash Lite | $1.00 | $0.50 | ~$1.50 |
| Flash | $3.00 | $3.13 | ~$6.13 |
| Pro | $12.50 | $12.50 | ~$25.00 |
בלי עיבוד מקדים ל-Markdown (עם HTML גולמי בכ-200M טוקנים קלט), המספרים קופצים פי 4–5. עיבוד מקדים הוא האופטימיזציה עם המינוף הגבוה ביותר בכל הצינור.
קוד מול ללא קוד: שני מסלולים לגריטת אתרים עם Gemini
כאן יש צומת דרכים. אם אתם מפתחים שבונים צינור מותאם אישית, מסלול Python + Gemini API נותן לכם שליטה מלאה. אם אתם משתמשים עסקיים שצריכים נתונים עכשיו ולא רוצים להתעסק עם טרמינל, scraper AI ללא קוד יוביל אתכם לשם מהר יותר.
| קריטריון | Gemini API (Python) | Thunderbit (ללא קוד) |
|---|---|---|
| זמן התקנה | 15–30 דק' (סביבה, מפתחות, ספריות) | < דקה (התקנת תוסף Chrome) |
| נדרש קוד | כן (Python, Pydantic) | לא |
| טיפול בעימוד | סקריפט ידני | מובנה (לחיצה או scroll אינסופי) |
| העשרת דפי משנה | קוד מותאם לכל אתר | "Scrape Subpages" בלחיצה אחת |
| ניהול עלות טוקנים | ידני (ניקוי HTML, בחירת מודל) | מנוהל ע"י מנוע AI |
| אפשרויות ייצוא | JSON/CSV דרך סקריפט | Excel, Google Sheets, Airtable, Notion |
| הכי מתאים ל | מפתחים שבונים pipelines מותאמים | משתמשים עסקיים שצריכים נתונים עכשיו |
Thunderbit הוא הפתרון ללא קוד שבנינו ב-Thunderbit — תוסף Chrome שמשתמש ב-AI (כולל Gemini, ChatGPT, Claude ואחרים מתחת למכסה המנוע) כדי להציע שדות, לגרד בשתי לחיצות ולייצא לכלי שבחרתם. בהמשך אעבור על שני המסלולים.
למשתמשים שמתחילים מגיליון, Quadratic הוא עוד כלי ששווה להכיר — זהו גיליון AI שיכול להריץ גריטה מבוססת Gemini ישירות בתוך הגיליון עצמו. אבל לזרימות עבודה שמתחילות מדף אינטרנט מוכר (רשימות מוצרים, ספריות, מאגרי לידים), Thunderbit תואם יותר את מודל החשיבה של המשתמש.
שלב אחר שלב: גריטת אתרים עם Gemini באמצעות Python
החלק הזה מיועד למפתחים. אם אתם רוצים את המסלול ללא קוד, דלגו קדימה.
לפני שמתחילים:
- רמת קושי: בינונית (נדרשת היכרות עם Python)
- זמן נדרש: כ-20–30 דקות לגריטה ראשונה
- מה תצטרכו: Python 3.10+, חשבון Google AI Studio (חינמי), וכתובת URL יעד
שלב 1: הקמת סביבת Python ומפתח API של Gemini
צרו תיקיית פרויקט וסביבת virtual environment, ואז התקינו את הספריות הנדרשות:
mkdir gemini-scraper && cd gemini-scraper
python -m venv venv && source venv/bin/activate
pip install -U google-genai requests beautifulsoup4 markdownify pydantic
חשוב: ה-SDK הנכון היחיד ב-2026 הוא google-genai. החבילה הישנה google-generativeai הגיעה ל-end-of-life ב-2025-11-30 וכעת היא deprecated. אם אתם רואים מדריך עם import google.generativeai as genai, הקוד הזה כבר לא עדכני.
עכשיו קבלו מפתח API מ-Google AI Studio. לחצו על "Get API Key", צרו מפתח חדש, ושמרו אותו כמשתנה סביבה:
export GEMINI_API_KEY="your-key-here"
עכשיו אמורה להיות לכם סביבת Python עובדת עם כל התלויות מותקנות ומפתח API מוכן.
שלב 2: שליפת ה-HTML של דף היעד
השתמשו ב-requests כדי למשוך את הדף. בדוגמה הזו נגרד דף מוצר:
import requests
url = "https://example.com/product/widget-pro"
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"}, timeout=30)
html = response.text
אם האתר משתמש בהרבה JavaScript או בהגנות אנטי-בוט כבדות, requests.get() עלול להחזיר מעטפת ריקה או שגיאת 403. ניגע בדרכי התמודדות בהמשך סעיף המגבלות — אבל בהרבה אתרים ציבוריים זה עובד מצוין.
שלב 3: ניקוי HTML והמרה ל-Markdown
זה השלב שרוב המדריכים מזכירים, אבל לא מכמתים. HTML גולמי של דף מוצר טיפוסי מגיע לכ-20,000 טוקנים. אחרי סינון עם BeautifulSoup והמרה ל-Markdown, אתם מסתכלים על בערך 765–4,000 טוקנים — ירידה של פי 5–10 שחוסכת כסף אמיתי ומפחיתה הזיות.
from bs4 import BeautifulSoup
from markdownify import markdownify
soup = BeautifulSoup(html, "html.parser")
main = soup.select_one("main") or soup # קחו רק את אזור התוכן
markdown_content = markdownify(str(main))
הקריאה select_one("main") מסירה כותרות, פוטר, סרגלי ניווט וסקריפטים — כל הרעש שמבזבז טוקנים ומבלבל את המודל. אם האתר לא משתמש בתג <main>, נסו .product-detail, #content, או כל אלמנט אחר שעוטף את הנתונים האמיתיים.
אחרי השלב הזה אמורה להיות לכם מחרוזת Markdown נקייה עם כל התוכן המשמעותי של הדף.
שלב 4: הגדרת סכימת הנתונים ושליחה ל-Gemini
השתמשו ב-Pydantic כדי להגדיר מה אתם רוצים לקבל בחזרה. ה-SDK של google-genai מקבל BaseModel של Pydantic ישירות כ-response_schema:
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: str
sku: str | None = None
description: str
sizes: list[str] = []
colors: list[str] = []
client = genai.Client() # קורא את GEMINI_API_KEY מהסביבה
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"חלצו פרטי מוצר מהדף הזה:\n\n{markdown_content}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
product = response.parsed
print(product)
כמה מלכודות מתוך רשימת הבאגים המתועדת:
- אל תשתמשו ב-
Field(default=...)בסכימות שאתם שולחים ל-Gemini — ה-API זורקValueError. במקום זה, הגדירו ברמת הטיפוסsku: str | None = None. - שמרו על קינון רדוד (עד 3 רמות). סכימות מקוננות עמוק גורמות ל-Flash ול-Flash Lite להפיק פלט רקורסיבי או סוגריים שלא נסגרים.
- סמנו שדות כנדרשים כשמשתמשים ב-Flash Lite, והעדיפו מחרוזות ריקות כ-sentinel במקום השמטה — הטיפול של Flash Lite בשדות אופציונליים לא יציב.
עכשיו אמור להיות לכם אובייקט Product מפורש עם נתונים מובנים מהדף.
שלב 5: ייצוא ואחסון של הנתונים שנגרדו
שמרו את התוצאה כ-JSON או CSV:
import json
with open("products.json", "w") as f:
json.dump(product.model_dump(), f, indent=2)
אם אתם מעבירים ל-Google Sheets, אפשר להשתמש בספריית gspread. למסדי נתונים, סדרו את המידע לפי ה-ORM המועדף עליכם. הפלט המובנה מ-Gemini נקי מספיק כדי להיכנס ישירות לרוב הכלים בהמשך התהליך.
שלב אחר שלב: גריטת אתרים עם Gemini בלי קוד (באמצעות Thunderbit)
זה המסלול למשתמשים עסקיים — או למפתחים שפשוט לא רוצים לכתוב סקריפטים חד-פעמיים לגריטה.
לפני שמתחילים:
- רמת קושי: מתחילים
- זמן נדרש: כ-5 דקות לגריטה ראשונה
- מה תצטרכו: דפדפן Chrome, תוסף Thunderbit (שכבת החינם מספיקה)
שלב 1: התקנת תוסף Thunderbit ל-Chrome
עברו אל Chrome Web Store ולחצו על "Add to Chrome". הירשמו עם האימייל — כל התהליך לוקח פחות מדקה. תחשבו על זה מול 15–30 דקות של ההגדרה ב-Python שתיארנו למעלה.
שלב 2: פתיחת דף היעד ולחיצה על "AI Suggest Fields"
עברו לאתר שתרצו לגרד — רשימת מוצרים, ספריית נדל"ן, מאגר לידים, מה שתרצו. לחצו על אייקון Thunderbit בסרגל הכלים של הדפדפן, ואז על "AI Suggest Fields."
ה-AI של Thunderbit קורא את הדף וממליץ אוטומטית על שמות עמודות וסוגי נתונים — למשל "Product Name", "Price", "Rating", "Image URL". אפשר לשנות שמות עמודות, להסיר שדות שלא צריך, או להוסיף הנחיות AI מותאמות לכל עמודה (למשל "categorize as High/Medium/Low" או "translate to English").
לפני שתגרדו אפילו שורה אחת, תראו תצוגה מקדימה של טבלה עם העמודות שהוגדרו.
שלב 3: לחיצה על "Scrape" ובדיקת התוצאות
לחיצה אחת. Thunderbit מטפל בעימוד — גם כפתורי "Next" וגם scroll אינסופי — ומחלץ את הנתונים לטבלה מובנית. אפשר לבחור בין:
- Cloud Scraping: מהיר יותר, מעבד עד 50 דפים במקביל. עובד באתרים ציבוריים.
- Browser Scraping: רץ בלשונית Chrome המחוברת והמחוייבת שלכם. מתאים לאתרים שדורשים אימות (CRMs, ספריות מוגנות, כלים פנימיים).
התוצאות מופיעות בטבלה ממש בסרגל הצד של התוסף. עברו עליהן וחפשו שגיאות בולטות לפני הייצוא.
שלב 4: ייצוא ל-Excel, Google Sheets, Airtable או Notion
לחצו על כפתור הייצוא ובחרו פורמט. Thunderbit מייצא ל-Excel, Google Sheets, Airtable ו-Notion — בחינם, בלי חסימת תשלום. שדות תמונה מועלים ישירות לספריות התמונות של Notion ו-Airtable, וזה נוח במיוחד אם אתם גוררים תמונות מוצרים או תמונות פרופיל.
בלי ניתוח JSON. בלי כתיבת קוד. הנתונים מוכנים לשימוש מיידי.
גריטת דפים מרובים ודפי משנה עם Gemini
רוב המדריכים מסיימים בשקט אחרי URL אחד. משימות גריטה אמיתיות לא.
גריטת 500 דפי מוצר עם עימוד ודפי פרטים היא כבר פרויקט — והפער בין דמו של URL אחד לבין המציאות עצום.
טיפול בעימוד עם Gemini API (גישה עם קוד)
עבור URLs שממוספרים לפי עמודים (הדפוס הנפוץ ביותר), לולאו בין הדפים עד שמקבלים תוצאה ריקה:
import time
all_products = []
for page in range(1, 101): # עד 100 דפים
url = f"https://example.com/products?page={page}"
md = fetch_clean(url) # פונקציית HTML→Markdown שלכם מהשלבים הקודמים
response = client.models.generate_content(
model="gemini-2.5-flash-lite", # זול לדפי רשימה
contents=f"חלצו שמות מוצרים ו-URLs:\n\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=list[ListingItem],
),
)
items = response.parsed
if not items:
break
all_products.extend(items)
time.sleep(4) # כבדו את מגבלות שכבת החינם
באתרים מבוססי cursor או infinite scroll, תצטרכו ליירט את ה-endpoint של XHR שהחזית קוראת לו (בדקו את לשונית Network בדפדפן) ולולא אותו ישירות. זה זול יותר מרינדור מחדש, ואתם שולחים פריטים ל-Gemini רק אם השדות צריכים ניקוי מבוסס LLM.
שימו לב לעלות הטוקנים כאן — כל דף מגדיל את החשבון. השתמשו ב-Flash Lite לדפי רשימה פשוטים, ושדרגו ל-Flash רק לצורך חילוץ דפי פרטים.
גריטת דפי משנה כדי לקבל נתונים עשירים יותר (גישה עם קוד)
הדפוס הקלאסי בשני שלבים: שלב 1 גורר דף רשימה כדי לאסוף URLs, שלב 2 מבקר בכל דף פרטים כדי להוציא נתונים עשירים יותר.
# שלב 1: איסוף URLs עם Flash Lite זול
class Listing(BaseModel):
product_urls: list[str]
listing = client.models.generate_content(
model="gemini-2.5-flash-lite",
contents=f"חלצו URLs של מוצרים:\n{listing_md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Listing,
),
).parsed
# שלב 2: חילוץ פרטים עם Flash
class ProductDetail(BaseModel):
name: str
price: str
specs: dict[str, str]
reviews: list[str]
for url in listing.product_urls:
md = fetch_clean(url)
detail = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"חלצו פרטי מוצר:\n{md}",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=ProductDetail,
),
).parsed
# שמרו את הפרטים...
time.sleep(0.5)
זה עובד, אבל יש הרבה אינסטלציה: נטרול כפילויות ב-URLs, טיפול בשגיאות, הגבלת קצב, retry logic, ושמירת HTML גולמי כדי ששינויים בסכימה לא ידרשו שליפה מחדש. עבור 50 דפים זה סביר. עבור 5,000 אתם כבר בונים תשתית.
החלופה ללא קוד: עימוד ודפי משנה מובנים של Thunderbit
Thunderbit מטפל אוטומטית גם בעימוד מבוסס לחיצות וגם ב-scroll אינסופי — בלי לכתוב לולאות. עבור העשרת דפי משנה, תכונת "Scrape Subpages" מבקרת בכל דף פרטים שמקושר מדף הרשימה ומעשירה את הטבלה המקורית בשדות עמוקים יותר. לחיצה אחת, לא סקריפט אחד.
מצב Cloud Scraping מעבד עד 50 דפים במקביל, וזה משנה מאוד כשגוררים קטלוג מוצרים או ספריית נדל"ן בקנה מידה גדול. למי שלא רוצה לנהל לולאות Python ולוגיקת retry, זו הבחירה המעשית. (לעוד על גריטת נתונים מאתרים ל-Excel, יש אצלנו מדריך נפרד.)
גריטת צילומי מסך: קיצור הדרך המולטי-מודאלי של Gemini
הנה גישה שרוב המדריכים מדלגים עליה לגמרי: שליחת צילום מסך של דף אינטרנט ל-vision API של Gemini במקום HTML גולמי. מפתח אחד דיווח שצילום מסך אחד עולה רק כ-258 טוקנים — לעומת אלפים אפילו עבור Markdown מנוקה. זה פער עלות דרמטי עבור חילוצים פשוטים.
איך משתמשים ב-Vision API של Gemini לגריטת אתרים
לכדו צילום מסך עם Playwright, קודדו אותו, ושלחו ל-Gemini:
from playwright.sync_api import sync_playwright
from google import genai
from google.genai import types
from pydantic import BaseModel
class Product(BaseModel):
title: str
price: str
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://example.com/product/widget-pro")
page.wait_for_load_state("networkidle")
png_bytes = page.screenshot(full_page=False) # רק החלק העליון של הדף
client = genai.Client()
resp = client.models.generate_content(
model="gemini-2.5-flash",
contents=[
{"inline_data": {"mime_type": "image/png", "data": png_bytes}},
"חלצו את שם המוצר והמחיר כ-JSON.",
],
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=Product,
),
)
print(resp.parsed)
לפי תיעוד טוקני התמונות של Google, תמונה שבה שני הממדים קטנים או שווים ל-384 פיקסלים עולה 258 טוקנים. תמונות גדולות יותר נחתכות לקטעים של 768×768, וכל קטע עולה 258 טוקנים. צילום מסך קצר מעל קו ה-fold (258–1,600 טוקנים) מנצח בקלות HTML גולמי — אבל צילום מסך מלא וגבוה מאוד (~5,000 טוקנים) יכול דווקא להפסיד ל-Markdown נקי (~765–1,200 טוקנים).
מגבלות של גריטת צילומי מסך
- דיוק נמוך יותר בטבלאות צפופות: פריסות רב-עמודתיות, פונטים קטנים ואלמנטים חופפים גורמים לקריאות חלקיות — לא הזיות, אלא פספוסי תוויות וכותרות לא מיושרות.
- לא ניתן לעקוב אחרי קישורים: Vision מחזיר טקסט, לא links לחיצים. בלי עימוד, בלי העשרת דפי משנה.
- תקרת רזולוציה: טקסט קטן בערך מ-10px נוטה להיקרא לא נכון. Google מבצע downsample לכ-1,568px על הצד הארוך.
- עלות לכידה: ההפעלה של Playwright וההמתנה ל-networkidle לוקחות 2–5 שניות לדף, וזה מצטבר בקנה מידה גדול.
גריטת צילומי מסך מצטיינת בדפים כבדי JavaScript, אתרים שחוסמים בוטים (כש-requests.get() מחזיר 403 אבל הדפדפן כן מרנדר), ובדפים עם נתונים שמוטמעים בגרפים או בתמונות. עבור דפים ארוכים ועשירים בטקסט, Markdown עדיין עדיף.
גריטת תמונות ו-PDF ב-Thunderbit משתמשת בגישה דומה של AI vision — פשוט גוררים תמונה או PDF ומקבלים טבלה מובנית, בלי סקריפטים של צילום מסך ובלי התעסקות עם base64. (ראו גם: איך להמיר תמונות ל-Excel.)
מתי גריטת Gemini נכשלת (ומה לעשות במקום)
Gemini הוא מנוע חילוץ, לא מנוע שליפה. אם אתם לא מצליחים להביא את תוכן הדף ל-Gemini, הוא לא יעזור. נקודה.
יש כמה מצבים נפוצים שבהם כל הגישה נשברת, ורוב המדריכים מתייחסים אליהם כבדרך אגב. אני מעדיף לומר את זה ישירות.
| מגבלה | מה קורה | איך מתמודדים |
|---|---|---|---|
| אנטי-בוט / Cloudflare | בקשות API נחסמות; requests.get() מחזיר 403 או דף challenge | להשתמש בפרוקסים עם סיבוב TLS fingerprint, או בכלים מבוססי דפדפן (מצב Browser scraping של Thunderbit משתמש בסשן המחובר שלכם) |
| מגבלות חלון טוקנים | דפים גדולים חורגים מההקשר השימושי (~200K–300K לחילוץ אמין, גם אם 1M נתמך טכנית) | ניקוי HTML→Markdown, פיצול דפים, או שימוש בצילומי מסך |
| הזיות בתוכן ויזואלי | Gemini מנחש לפי alt text או captions במקום תוכן התמונה בפועל | לאמת פלטים; להשתמש ב-vision API במפורש עבור תמונות; להוסיף validators עם grounding |
| מגבלות קצב API | חסימות בקנה מידה גדול — בשכבת החינם בערך 100 RPD ב-Pro, 1,000 RPD ב-Flash Lite | ניהול תורים, batching (הנחה של 50%), או מעבר לכלים מוכנים |
| חילוץ לא עקבי (מודלי Lite) | שדות אופציונליים, חותמות זמן ונתונים מקוננים מתפספסים או מומצאים | שדרוג ל-Flash/Pro, או הוספת אילוצים מפורשים לסכימה |
| אתרים מוגנים (LinkedIn וכו') | מוחזרות שגיאות או נתונים ריקים | גריטה מבוססת דפדפן עם סשן פעיל (Thunderbit תומך בזה); לכבד את תנאי השימוש |
כמה מהנקודות האלה דורשות עוד הקשר.
אנטי-בוט היום כבר מודע ל-LLM. Cloudflare חוסם crawlers של AI כברירת מחדל נכון ליולי 2025, עם 416 מיליארד בקשות בוט AI שנחסמו בחמשת החודשים הראשונים. Datadome הוסיפה ב-2025 זיהוי ייעודי ל-LLM וראתה תעבורת בוטים של LLM קופצת פי ארבעה. שילוב פשוט של requests.get() + Gemini כמעט מת הלכה נגד אתרים מוגני Datadome. הבעיה היא ה-fingerprint, לא ה-IP — החלפת IPs בלבד לא תעזור אם TLS fingerprint צועק "Python requests".
הזיות הן דבר עדין. מודלי LLM שמאומנים להיות מועילים ימלאו שדות אופציונליים בהמצאות סבירות במקום להחזיר null. ראיתי מודלים מנחשים מותג של מוצר מתוך ה-URL slug, מסיקים מטבע מה-TLD, וכותבים כמויות ביקורות שנשמעות סבירות אבל מומצאות מתוך skeleton loaders. שכבת ההגנה: סכימות Pydantic קשיחות, לולאות retry עם משוב על אימות, validators שבודקים שהערכים שחולצו אכן מופיעים ב-HTML המקור, ו-חילוץ בשני שלבים (Flash מחלץ, Pro מאמת מדגם).
חלון הקשר של 1M לא באמת שמיש עד 1M. מחקר של Chroma ואחרים מראה שאיכות ההסקה יורדת הרבה לפני תקרת הטוקנים. התייחסו לכ-200K–300K טוקנים כאל התקרה המעשית לחילוץ מובנה.
עץ החלטה: באיזה כלי להשתמש?
- נפח נמוך + דפים פשוטים + מפתח → שכבת החינם של Gemini API + Python
- נפח בינוני + סכימות מורכבות + מפתח → Gemini 2.5 Flash בתשלום + Python + פלט מובנה + עיבוד מקדים
- כל נפח + לא מפתח/ת + אתרים עם התחברות או עימוד כבד → Thunderbit
- נפח גבוה מאוד + אנטי-בוט חזק + משימה קריטית → תשתית גריטה מנוהלת (שירותי פרוקסי) + Gemini כשכבת החילוץ
טיפים לגריטת אתרים עם Gemini: איך לחסוך זמן וכסף
בין אם אתם כותבים Python או לוחצים על כפתורים, הטיפים האלה יחסכו לכם כאב ראש.
- תמיד הקדימו עיבוד מ-HTML ל-Markdown לפני שליחה ל-Gemini. חיסכון של 5–10× בטוקנים הוא דבר טיפוסי; אפשר להגיע גם ל-95% כשמנקים מראש עם BeautifulSoup.
- השתמשו רק ב-
google-genai. אל תשתמשו בחבילתgoogle-generativeaiשהוצאה משימוש — היא EOL. - התחילו עם Flash Lite רק לסכימות שטוחות. עברו ל-Flash ברגע שמופיעים קינון או שדות אופציונליים.
- הימנעו מ-
Field(default=...)בסכימות Pydantic שאתם שולחים ל-Gemini. הגדירוsku: str | None = Noneברמת הטיפוס. - Pydantic +
response_schemaהם קריטיים — זה גם חוזה וגם מעקה נגד הזיות. - השתמשו ב-Batch API למשימות של מעל 1,000 דפים — הנחה של 50% וזה לא נספר מול RPM בזמן אמת.
- אמתו ידנית מדגם אקראי של 10–50 שורות לפני שאתם מגדילים קנה מידה של מחלץ חדש. סטיות דיוק לא נראות עד שמסתכלים.
- שמרו HTML גולמי לדיסק — שינויים בסכימה לא צריכים להפעיל שליפה מחדש.
- תעדו את כתובת המקור בכל שורה כדי שתוכלו לסרוק מחדש דפים בודדים בלי להריץ את כל העבודה מחדש.
- למשתמשי ללא קוד: השתמשו ב-prompts AI מותאמים לכל עמודה ב-Thunderbit כדי להעביר prompt engineering לשכבת הגיליון — לתרגם, לסווג, לסכם ברמת עמודה.
ועוד אחד: אל תעלו לייצור עם שכבת החינם. המגבלות קוצצו ב-50–80% בדצמבר 2025 ויכולות להיחתך שוב בלי הודעה מוקדמת.
לסיכום
המרחק בין דמו של Gemini על URL אחד לבין צינור ייצור אמיתי גדול יותר ממה שרוב המדריכים מודים.
מסלול Python + Gemini API נותן למפתחים שליטה מלאה על בחירת המודל, העיבוד המקדים, העימוד ועיצוב הסכימה. המסלול ללא קוד — כלים כמו Thunderbit — נותן למשתמשים עסקיים את אותו חילוץ נתונים מובנה בלי לגעת בטרמינל.
מה הייתי לוקח מכאן:
- בחירת מודל חשובה. Flash Lite לנפח, Flash לאיזון, Pro למורכבות. אל תבחרו אוטומטית בזול ביותר ותתפלאו למה הנתונים שגויים.
- גריטת דפים מרובים ודפי משנה היא המקום שבו המדריכים נופלים — ושם העבודה האמיתית קורה. שני המסלולים כאן מכסים את הפער הזה.
- מגבלות אמיתיות חוסכות זמן. אם אתר חוסם בקשות API, שום prompt engineering לא יעזור. בחרו את הכלי המתאים למשימה, לא את הכי נוצץ.
- עיבוד HTML ל-Markdown הוא האופטימיזציה עם המינוף הגבוה ביותר — הוא חותך עלויות ב-75%+ ומפחית הזיות.
אם תרצו לנסות את המסלול ללא קוד, שכבת החינם של Thunderbit מאפשרת לגרד כמה דפים ולראות את התוצאות בעצמכם. אם אתם מעדיפים קוד, שכבת החינם של Gemini API מספיקה כדי לבנות אבטיפוס לצינור עבודה בתוך אחר צהריים. כך או כך, תגיעו לנתונים מובנים הרבה יותר מהר מכל העתקה-הדבקה. לעוד מידע על חילוץ נתונים מאתרים ל-Excel או על ה-Web Scrapers מבוססי AI הטובים ביותר, סקרנו את הנושאים האלה לעומק בבלוג שלנו.
נסו את Thunderbit לגריטת אתרים עם AI Get Started Free
שאלות נפוצות
כמה עולה להשתמש ב-Gemini לגריטת אתרים?
ל-Gemini API יש שכבת חינם של בערך 100 בקשות ביום ב-Pro, 500 ביום ב-Flash, ו-1,000 ביום ב-Flash Lite (נכון לתחילת 2026 — המגבלות האלה קוצצו בדצמבר 2025). בשכבה בתשלום, גריטה של 10,000 דפי מוצר עולה בערך $1.50 עם Flash Lite, כ-$6 עם Flash, או $25 עם Pro — בהנחה שמקדימים עיבוד מ-HTML ל-Markdown. בלי עיבוד מקדים, העלויות קופצות פי 4–5. Batch API נותן הנחה של 50% למשימות שאינן בזמן אמת.
האם Gemini יכול לגרד אתרים שדורשים התחברות?
ה-API של Gemini לבדו לא יכול להתחבר לאתרים — הוא רק מעבד את התוכן שאתם שולחים אליו. צריך להביא את ה-HTML בעצמכם באמצעות סשן מאומת שלכם (למשל עם דפדפן headless ו-cookies שמורים). מצב Browser Scraping של Thunderbit מטפל בזה באופן מובנה: הוא רץ בלשונית Chrome המחוברת שלכם, כך שכל אתר שאתם רואים בדפדפן, Thunderbit יכול לגרד.
האם גריטת אתרים עם Gemini חוקית?
החוקיות תלויה בתנאי השימוש של האתר, סוג הנתונים והתחום שבו אתם פועלים. בארה"ב, לאחר hiQ v. LinkedIn ו-Meta v. Bright Data, גריטה של נתונים נגישים לציבור בלי התחברות נחשבת בדרך כלל מותרת — אבל כל מקרה תלוי נסיבות. גריטה מאחורי התחברות כרוכה בסיכון משפטי גבוה יותר. מידע אישי של תושבי האיחוד האירופי כפוף ל-GDPR בלי קשר אם האתר ציבורי. תמיד כבדו robots.txt ותנאי שימוש, והימנעו מגריטת נתונים אישיים בלי בסיס משפטי תקף.
האם אפשר להשתמש ב-Gemini כדי לגרד אתרים דינמיים עם הרבה JavaScript?
כן, אבל צריך קודם לרנדר את ה-JavaScript — או עם דפדפן headless (Playwright, Puppeteer) או על ידי יירוט ישיר של נקודות הקצה של ה-API של האתר. אחרי שיש לכם HTML מרונדר, מנקים אותו ושולחים ל-Gemini כרגיל. לחלופין, גריטת צילומי מסך עם Vision API של Gemini עוקפת לגמרי את שלב הרינדור של JS — אם זה מוצג בדפדפן, Gemini יכול לראות את זה. Thunderbit מטפל בדפים מרונדרים ב-JS אוטומטית גם במצב Cloud וגם במצב Browser Scraping.
מה ההבדל בין שימוש ב-Gemini לגריטה לבין כלי גריטה ייעודי כמו Thunderbit?
Gemini הוא מנוע חילוץ — הוא מפרש תוכן ומחזיר נתונים מובנים. הוא לא מבקר באתרים, לא מטפל בעימוד, לא מנהל אימות ולא מייצא לגיליונות. עדיין צריך משהו שיביא את תוכן הדף ל-Gemini ומשהו שיעשה משהו שימושי עם הפלט. כלים ייעודיים כמו Thunderbit משלבים שליפה, רינדור, חילוץ AI, עימוד, העשרת דפי משנה וייצוא בחבילה אחת — בלי אינסטלציה.
למידע נוסף


