בואו נציג את כל הכותרות מ ynet דרך שורת הפקודה
אתרי אינטרנט מציגים את המידע שלהם בצורה שבוני האתר מצאו לנכון, אבל לא תמיד זאת הצורה שאנחנו הגולשים הכי רוצים. המתח המוכר ביותר בין בוני אתרים לגולשים הוא בנושא הפירסומות וחוסמי הפירסומות, אבל הוא לא היחיד. אולי אתם רוצים שהמידע יהיה מאורגן אחרת, או לקבל רק חלק מהמידע, או שילוב מידע מכמה מקורות.
לשמחתכם יש די הרבה כלים קטנים שאפשר להשתמש בהם כדי לבנות סקריפטים שיעשו בדיוק את זה. בשבועיים הקרובים אני מתכנן להראות דוגמאות למצבים כאלה ולסקריפטים קטנים שעוזרים בהם - כולם לקראת וובינר Web Scraping שיתקיים ביום חמישי הבא. היום בשביל הפתיחה ניקח משימה יחסית קלה: הצגת כל הכותרות מ ynet בשורת הפקודה.
שני דברים שכדאי לשים לב אליהם עוד לפני שניגשים לכתוב את שורת הקוד הראשונה:
הכי קל לקבל את הכותרות בדף ה"מבזקים" של ynet. אם תצליחו למצוא את הכפתור "מבזקים" תוכלו להעתיק את ה url משם.
בדף המבזקים כל כותרת היא תגית a עם קלאס בשם smallheader.
אז מה עושים? לוקחים את ה HTML מדף המבזקים, זורקים אותו ל HTML Parser ושם שולפים את כל אלמנטי ה a עם הקלאס smallheader. בפייתון הספריה שעוזרת לקבל קובץ HTML לפי כתובת ברשת נקראת requests והספריה שמפענחת קבצי HTML נקראת Beautiful Soup. כשמחברים את שתיהן יחד מקבלים:
import requests
from bs4 import BeautifulSoup
url = 'https://www.ynet.co.il/home/0,7340,L-184,00.html'
r = requests.get(url)
soup = BeautifulSoup(r.text)
for link in soup.select('a.smallheader'):
print(link.text)
את הסקריפט הזה אתם יכולים כבר להריץ מ cronjob ולקבל את רשימת המבזקים מתוקצרת ישר למייל שלכם על הבוקר וכך תוכלו להיות רגועים ולדעת שהעולם לא התמוטט כשישנתם.