לגרד אתר בעזרת הדרכת פייתון מרק יפה זו

לגרד אתר בעזרת הדרכת פייתון מרק יפה זו

מרק יפה היא ספריית פייתון בעלת קוד פתוח. הוא משתמש בנתחי ניווט כדי לגרד את התוכן של קבצי XML ו- HTML. אתה צריך נתונים למספר מטרות אנליטיות. עם זאת, אם אתה חדש ב- Python וגרידת אתרים, ספריית המרק היפה של Python שווה לנסות לפרויקט גירוד אתרים.





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





כיצד להתקין מרק יפה ולהתחיל עם זה

לפני שנמשיך, במאמר ההדרכה היפה הזה של מרק, נשתמש ב- Python 3 ו- מרק יפה 4 , הגרסה האחרונה של מרק יפה. ודא שאתה ליצור סביבה וירטואלית של פייתון כדי לבודד את הפרויקט ואת חבילותיו מאלה שבמכונה המקומית שלך.





כיצד להשבית אתחול מהיר חלונות 10

כדי להתחיל, עליך להתקין את ספריית המרק היפה בסביבה הווירטואלית שלך. מרק יפה זמין כחבילה של PyPi לכל מערכות ההפעלה, כך שתוכל להתקין אותה עם פיפ התקן יופי של מרק 4 פקודה באמצעות הטרמינל.

עם זאת, אם אתה משתמש ב- Debian או Linux, הפקודה לעיל עדיין פועלת, אך תוכל להתקין אותה עם מנהל החבילות על ידי הפעלה apt-get להתקין python3-bs4 .



מרק יפה לא מגרד כתובות אתרים ישירות. זה עובד רק עם קבצי HTML או XML מוכנים. זה אומר שאתה לא יכול להעביר כתובת URL ישר לתוכו. כדי לפתור את הבעיה, עליך לקבל את כתובת האתר של אתר היעד עם ספריית הבקשות של פייתון לפני שתאכיל אותה למרק יפה.

כדי להפוך את הספרייה לזמינה למגרד שלך, הפעל את בקשות להתקנת pip פקודה באמצעות הטרמינל.





כדי להשתמש בספריית מנתח ה- XML, הפעל pip להתקין lxml להתקין אותו.

בדוק את דף האינטרנט שברצונך לגרד

לפני גירוד כל אתר שאינך מכיר, שיטה מומלצת היא לבדוק את המרכיבים שלו. תוכל לעשות זאת על ידי העברת הדפדפן למצב המפתח. זה די קל השתמש ב- Chrome DevTools אם אתה משתמש ב- Google Chrome.





עם זאת, יש צורך לבדוק דף אינטרנט כדי לדעת יותר על תגי ה- HTML שלו, התכונות, הכיתות והמזהים שלו. פעולה זו חושפת את מרכיבי הליבה של דף אינטרנט וסוגי התוכן שלו.

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

כיצד לגרד נתוני אתרים בעזרת מרק יפהפה

כעת, לאחר שהכל מוכן, פתח עורך קוד מועדף וצור קובץ Python חדש ונותן לו שם נבחר. עם זאת, אתה יכול גם השתמש במזהי אינטרנט מבוססי אינטרנט כמו Jupyter Notebook אם אינך מכיר את הפעלת פייתון באמצעות שורת הפקודה.

לאחר מכן, ייבא את הספריות הדרושות:

from bs4 import BeautifulSoup
import requests

ראשית, בואו נראה כיצד פועלת ספריית הבקשות:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

כאשר אתה מפעיל את הקוד למעלה, הוא מחזיר סטטוס של 200, המציין כי הבקשה שלך הצליחה. אחרת, תקבל סטטוס של 400 או מצבי שגיאה אחרים המצביעים על בקשת GET שנכשלה.

זכור להחליף תמיד את כתובת האתר בסוגריים בכתובת אתר היעד שלך.

ברגע שאתה מקבל את האתר עם לקבל לאחר מכן, תוכל להעביר אותו אל מרק יפהפה, שיכול כעת לקרוא את התוכן כקובצי HTML או XML באמצעות מנתח ה- XML ​​או HTML המובנה שלו, בהתאם לפורמט שבחרת.

תסתכל בקטע הקוד הבא כדי לראות כיצד לעשות זאת בעזרת מנתח ה- HTML:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

הקוד למעלה מחזיר את כל ה- DOM של דף אינטרנט עם התוכן שלו.

תוכל גם לקבל גרסה מיושרת יותר של DOM באמצעות לְיַפּוֹת שיטה. אתה יכול לנסות את זה כדי לראות את הפלט שלו:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

אתה יכול גם לקבל את התוכן הטהור של דף אינטרנט מבלי לטעון את האלמנט שלו עם .טֶקסט שיטה:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

כיצד לגרד את התוכן של דף אינטרנט לפי שם התגית

אתה יכול גם לגרד את התוכן בתג מסוים עם מרק יפה. לשם כך, עליך לכלול את שם תג היעד בבקשה שלך לגרד מרק יפה.

לדוגמה, בואו נראה כיצד תוכלו להשיג את התוכן ב- h2 תגים של דף אינטרנט.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

בקטע הקוד למעלה, מרק. h2 מחזיר את הראשון h2 אלמנט של דף האינטרנט ומתעלם מהשאר. כדי לטעון את כל h2 אלמנטים, אתה יכול להשתמש ב מצא הכל הפונקציה המובנית וה ל לולאה של פייתון:

כיצד למצוא את כתובת ה- IP של הטלפון שלי
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

גוש הקוד הזה מחזיר הכל h2 האלמנטים והתוכן שלהם. עם זאת, תוכל לקבל את התוכן מבלי לטעון את התג באמצעות .חוּט שיטה:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

אתה יכול להשתמש בשיטה זו עבור כל תג HTML. כל שעליך לעשות הוא להחליף את h2 תייג עם זה שאתה אוהב.

עם זאת, אתה יכול גם לגרד תגים נוספים על ידי העברת רשימת תגיות לתוך מצא הכל שיטה. לדוגמה, גוש הקוד להלן מגרד את התוכן של ל , h2 , ו כותרת תגיות:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

כיצד לגרד דף אינטרנט באמצעות המזהה ושם הכיתה

לאחר בדיקת אתר אינטרנט עם DevTools, הוא מאפשר לך לדעת יותר על מזהי ותכונות המחלקה המחזיקים כל אלמנט ב- DOM שלו. ברגע שיש לך את המידע הזה, אתה יכול לגרד את דף האינטרנט הזה בשיטה זו. זה שימושי כאשר התוכן של רכיב מטרה יוצא מהמסד הנתונים.

אתה יכול להשתמש ב למצוא שיטת המזהים ומגרדי הכיתה. לא כמו ה מצא הכל שיטה המחזירה אובייקט חוזר, ה למצוא השיטה עובדת על מטרה אחת שאינה חוזרת על עצמה, והיא תְעוּדַת זֶהוּת במקרה הזה. אז, אתה לא צריך להשתמש ב- ל לולאה עם זה.

הבה נבחן דוגמה כיצד תוכל לגרד את תוכן הדף שלהלן באמצעות המזהה:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

לשם כך לשם כיתה, החלף את תְעוּדַת זֶהוּת עם מעמד . עם זאת, כתיבה מעמד גורם ישירות לבלבול תחביר מכיוון שפייתון רואה בו מילת מפתח. כדי לעקוף את השגיאה הזו, עליך לכתוב קו תחתון לפני הכיתה כך: מעמד_ .

בעיקרו של דבר השורה המכילה את המזהה הופכת ל:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

עם זאת, באפשרותך גם לגרד דף אינטרנט על ידי קריאת שם תג מסוים עם המזהה או המחלקה המתאימים שלו:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

איך להכין מגרד רב פעמי עם מרק יפה

אתה יכול ליצור מחלקה ולחבר את כל הקוד הקודם לפונקציה באותה מחלקה כדי ליצור מגרד לשימוש חוזר שמקבל את התוכן של כמה תגים ואת המזהים שלהם. אנו יכולים לעשות זאת על ידי יצירת פונקציה המקבלת חמישה ארגומנטים: כתובת URL, שני שמות תגים והזיהוי או המחלקות המתאימים להם.

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

ודא שאתה פיפ להתקין פנדות דרך הטרמינל אם עדיין לא עשית זאת.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

המגרד שיצרת זה עתה הוא מודול לשימוש חוזר וניתן לייבא ולהשתמש בו בקובץ פייתון אחר. להתקשר ל לְגַרֵד פונקציה מהמחלקה שלה, אתה משתמש scrapeit.scrape ('כתובת אתר', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . אם אינך מספק את כתובת האתר ופרמטרים אחרים, אַחֵר ההצהרה מנחה אותך לעשות זאת.

כדי להשתמש בדפדפן הזה בקובץ פייתון אחר, תוכל לייבא אותו כך:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

הערה: scraper_module הוא שמו של קובץ ה- Python המחזיק את מחלקת המגרדים.

אתה יכול גם לבדוק את תיעוד מרק יפהפה אם אתה רוצה לצלול לעומק כיצד תוכל לנצל זאת בצורה הטובה ביותר.

מרק יפה הוא כלי לגרידת אתרים בעל ערך

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

כיצד למחוק את חשבון ה hotmail שלך

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל כלי הגריטה הטובים ביותר באינטרנט

צריכים לאסוף נתונים מאתרים למטרות אנליטיות? כלי גרידת הרשת האלה מקל על זה.

קרא הבא
נושאים קשורים
  • תִכנוּת
  • פִּיתוֹן
על הסופר אידיסו אומיסולה(פורסמו 94 מאמרים)

Idowu נלהב מכל דבר חכם וטכנולוגי. בזמנו הפנוי הוא משתעשע בקידוד ועובר ללוח השחמט כשהוא משועמם, אבל הוא גם אוהב להיפרד מדי פעם מהשגרה. התשוקה שלו להראות לאנשים את הדרך לטכנולוגיה המודרנית מניעה אותו לכתוב יותר.

עוד מאת Idowu Omisola

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה