חיטוט אוטומטי באתרים Web Scraping עם Python


#1

שלום,
ראיתי את הוובינר חיטוט אוטומטי באתרים Web Scraping עם Python, נסתי לחטט באתר הזה.
הרעיון הכללי היה לקרוא את עמוד הוובינרים, כך שאוכל להכין רשימה של KeyVal של שם וובינר, קישור. סה"כ משימה פשוטה.

הבנתי שאני יכול לראות את ה HTML של האתר דרך הדפדפן, ע"י inspet element , ואכן ראיתי את כל קוד ה html והבנתי שאני רצה לחפש את תגיות ה , אולם כאשר אני מנסה להשיג את התגית הזו ע"י שימוש ב beautifulSoup - אני לא מוצא שום תגית כזו.
זה נראה לי שאני מפספס משהו בהבנה. האם מישהו יכול להסביר לי יותר ?

import requests
from bs4 import BeautifulSoup

url = ‘https://www.tocode.co.il/workshops
r = requests.get(url)
soup = BeautifulSoup(r.text)
print(soup.prettify())
b = soup.find_all(‘a’, href=True)


#2

הי

בשמחה. הבעיה היא שיש הבדל בין inspect element לבין מה ש beautiful soup רואים

ה inspect element מראה לך את תוכן העמוד אחרי הרצת קוד JavaScript ו BS מראה לפני. בשביל להבין מה BS רואה תצטרך ללחוץ בדפדפן View Page Source

אם תעשה את זה תגלה שחלק משמעותי מהדף נבנה באמצעות JavaScript ולכן אתה לא יכול לקחת את המידע עם BS.

אפשרות אחת לעקוף את זה היא להשתמש בכלי כמו סלניום כדי להפעיל דפדפן אמיתי ולקחת דרכו את תוכן העמוד (נדמה לי שהראיתי דוגמא לזה בוובינר שאתה מתייחס אליו)

אפשרות שניה ספציפית באתר הזה היא להוסיף .json לשורת הכתובת ואז תקבל את הדף כבר מוכן לפיענוח בפייתון בפורמט json (זה מנגנון ספציפי שבניתי כאן כי גם אני משתמש בכלים אוטומטיים כדי לקחת מידע ולעבוד איתו)

כלומר הכתובת הבאה תראה לך את רשימת כל הוובינרים בפורמט json שקל לעבוד איתו מפייתון:

https://www.tocode.co.il/workshops.json