Ξύστε έναν ιστότοπο με αυτό το όμορφο σεμινάριο σούπας Python

Ξύστε έναν ιστότοπο με αυτό το όμορφο σεμινάριο σούπας Python

Το Beautiful Soup είναι μια βιβλιοθήκη Python ανοιχτού κώδικα. Χρησιμοποιεί αναλυτές πλοήγησης για να ξύσει το περιεχόμενο των αρχείων XML και HTML. Χρειάζεστε δεδομένα για διάφορους αναλυτικούς σκοπούς. Ωστόσο, αν είστε νέοι στην Python και το scraping στον ιστό, αξίζει να δοκιμάσετε τη βιβλιοθήκη της Python's Beautiful Soup για ένα έργο απόξεσης ιστού.





Με τη βιβλιοθήκη ανοιχτού κώδικα Beautiful Soup της Python, μπορείτε να λάβετε δεδομένα με απόξεση οποιουδήποτε μέρους ή στοιχείου μιας ιστοσελίδας με μέγιστο έλεγχο της διαδικασίας. Σε αυτό το άρθρο, εξετάζουμε πώς μπορείτε να χρησιμοποιήσετε την όμορφη σούπα για να ξύσετε έναν ιστότοπο.





Πώς να εγκαταστήσετε την όμορφη σούπα και να ξεκινήσετε με αυτήν

Πριν προχωρήσουμε, σε αυτό το άρθρο εκμάθησης του Beautiful Soup, θα χρησιμοποιήσουμε το Python 3 και beautifulsoup4 , η τελευταία έκδοση του Beautiful Soup. Βεβαιωθείτε ότι εσείς δημιουργήστε ένα εικονικό περιβάλλον Python για να απομονώσετε το έργο σας και τα πακέτα του από αυτά του τοπικού σας μηχανήματος.





πώς να βγάλεις νερό από τη θύρα του φορτιστή

Για να ξεκινήσετε, πρέπει να εγκαταστήσετε τη βιβλιοθήκη Beautiful Soup στο εικονικό σας περιβάλλον. Το Beautiful Soup διατίθεται ως πακέτο PyPi για όλα τα λειτουργικά συστήματα, ώστε να μπορείτε να το εγκαταστήσετε με το pip εγκατάσταση beautifulsoup4 εντολή μέσω του τερματικού.

Ωστόσο, εάν χρησιμοποιείτε Debian ή Linux, η παραπάνω εντολή εξακολουθεί να λειτουργεί, αλλά μπορείτε να την εγκαταστήσετε με τον διαχειριστή πακέτων εκτελώντας apt-get install python3-bs4 Το



Η όμορφη σούπα δεν ξύνει τις διευθύνσεις URL απευθείας. Λειτουργεί μόνο με έτοιμα αρχεία HTML ή XML. Αυτό σημαίνει ότι δεν μπορείτε να περάσετε ένα URL απευθείας σε αυτό. Για να λύσετε αυτό το πρόβλημα, πρέπει να λάβετε τη διεύθυνση URL του ιστότοπου προορισμού με τη βιβλιοθήκη αιτήματος της Python πριν την τροφοδοτήσετε με την όμορφη σούπα.

Για να κάνετε τη βιβλιοθήκη διαθέσιμη για το ξύστρα σας, εκτελέστε το αιτήματα εγκατάστασης pip εντολή μέσω του τερματικού.





Για να χρησιμοποιήσετε τη βιβλιοθήκη αναλυτή XML, εκτελέστε pip εγκατάσταση lxml να το εγκαταστήσω.

Επιθεωρήστε την ιστοσελίδα που θέλετε να ξύσετε

Πριν αφαιρέσετε οποιονδήποτε ιστότοπο δεν γνωρίζετε, μια βέλτιστη πρακτική είναι να ελέγξετε τα στοιχεία του. Μπορείτε να το κάνετε αυτό αλλάζοντας το πρόγραμμα περιήγησής σας στη λειτουργία προγραμματιστή. Είναι αρκετά εύκολο να χρησιμοποιήστε το Chrome DevTools εάν χρησιμοποιείτε το Google Chrome.





Ωστόσο, είναι απαραίτητο να ελέγξετε μια ιστοσελίδα για να μάθετε περισσότερα σχετικά με τις ετικέτες, τα χαρακτηριστικά, τις κλάσεις και τα αναγνωριστικά HTML της. Κάτι τέτοιο εκθέτει τα βασικά στοιχεία μιας ιστοσελίδας και τους τύπους περιεχομένου της.

Σας βοηθά επίσης να αναπτύξετε τις καλύτερες στρατηγικές που μπορείτε να χρησιμοποιήσετε για να λάβετε τα ακριβή δεδομένα που θέλετε από έναν ιστότοπο και πώς μπορείτε να τα αποκτήσετε.

Πώς να ξύσετε τα δεδομένα ενός ιστότοπου με όμορφη σούπα

Τώρα που έχετε τα πάντα έτοιμα, ανοίξτε έναν προτιμώμενο επεξεργαστή κώδικα και δημιουργήστε ένα νέο αρχείο Python, δίνοντάς του ένα επιλεγμένο όνομα. Ωστόσο, μπορείτε επίσης κάνουν χρήση των διαδικτυακών IDE όπως το Jupyter Notebook εάν δεν είστε εξοικειωμένοι με την εκτέλεση Python μέσω της γραμμής εντολών.

Στη συνέχεια, εισαγάγετε τις απαραίτητες βιβλιοθήκες:

from bs4 import BeautifulSoup
import requests

Αρχικά, ας δούμε πώς λειτουργεί η βιβλιοθήκη αιτημάτων:

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

Όταν εκτελείτε τον παραπάνω κώδικα, επιστρέφει μια κατάσταση 200, υποδεικνύοντας ότι το αίτημά σας είναι επιτυχές. Διαφορετικά, λαμβάνετε μια κατάσταση 400 ή άλλες καταστάσεις σφάλματος που υποδεικνύουν ένα αποτυχημένο αίτημα GET.

Θυμηθείτε να αντικαθιστάτε πάντα τη διεύθυνση URL του ιστότοπου στην παρένθεση με τη διεύθυνση URL -στόχου.

Μόλις αποκτήσετε τον ιστότοπο με το παίρνω αίτημα, το μεταφέρετε στη συνέχεια στην όμορφη σούπα, η οποία μπορεί τώρα να διαβάσει το περιεχόμενο ως αρχεία 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)

Πώς να ξύσετε το περιεχόμενο μιας ιστοσελίδας με το όνομα ετικέτας

Μπορείτε επίσης να ξύσετε το περιεχόμενο σε μια συγκεκριμένη ετικέτα με το Beautiful Soup. Για να το κάνετε αυτό, πρέπει να συμπεριλάβετε το όνομα της ετικέτας στόχου στο αίτημά σας για ξύστρα Beautiful Soup.

Για παράδειγμα, ας δούμε πώς μπορείτε να αποκτήσετε το περιεχόμενο στο η2 ετικέτες μιας ιστοσελίδας.

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

Στο απόσπασμα κώδικα παραπάνω, σούπα.h2 επιστρέφει το πρώτο η2 στοιχείο της ιστοσελίδας και αγνοεί τα υπόλοιπα. Για να φορτώσετε όλα τα η2 στοιχεία, μπορείτε να χρησιμοποιήσετε το find_all ενσωματωμένη λειτουργία και το Για βρόχος της Python:

αυτή η συσκευή δεν μπορεί να ξεκινήσει. (κωδικός 10) η τρέχουσα κατάσταση ισχύος της συσκευής δεν μπορεί να υποστηρίξει αυτό το αίτημα.
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)

Αυτό το μπλοκ κώδικα επιστρέφει όλα η2 στοιχεία και το περιεχόμενό τους. Ωστόσο, μπορείτε να λάβετε το περιεχόμενο χωρίς να φορτώσετε την ετικέτα χρησιμοποιώντας το .σειρά μέθοδος:

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. Το μόνο που χρειάζεται να κάνετε είναι να αντικαταστήσετε το η2 επισημάνετε με αυτό που σας αρέσει.

Ωστόσο, μπορείτε επίσης να ξύσετε περισσότερες ετικέτες περνώντας μια λίστα ετικετών στο find_all μέθοδος. Για παράδειγμα, το μπλοκ κώδικα παρακάτω διαγράφει το περιεχόμενο προς το , η2 , και τίτλος ετικέτες:

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, σας ενημερώνει για τα χαρακτηριστικά id και class που περιέχουν κάθε στοιχείο στο DOM του. Μόλις έχετε αυτήν την πληροφορία, μπορείτε να ξύσετε αυτήν την ιστοσελίδα χρησιμοποιώντας αυτήν τη μέθοδο. Είναι χρήσιμο όταν το περιεχόμενο ενός στοιχείου -στόχου εξέρχεται από τη βάση δεδομένων.

Μπορείτε να χρησιμοποιήσετε το εύρημα μέθοδο για τις ξύστρες ταυτότητας και κλάσης. σε αντίθεση με το find_all μέθοδος που επιστρέφει ένα επαναλαμβανόμενο αντικείμενο, το εύρημα η μέθοδος λειτουργεί σε έναν μοναδικό, μη επαναλαμβανόμενο στόχο, ο οποίος είναι το ταυτότητα σε αυτήν την περίπτωση. Επομένως, δεν χρειάζεται να χρησιμοποιήσετε το Για βρόχο με αυτό.

Ας δούμε ένα παράδειγμα για το πώς μπορείτε να ξύσετε το περιεχόμενο μιας σελίδας παρακάτω χρησιμοποιώντας το αναγνωριστικό:

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)

Για να το κάνετε αυτό για ένα όνομα κλάσης, αντικαταστήστε το ταυτότητα με τάξη Το Ωστόσο, γράφοντας τάξη οδηγεί άμεσα σε σύγχυση σύνταξης καθώς η Python το βλέπει ως λέξη -κλειδί. Για να παρακάμψετε αυτό το σφάλμα, πρέπει να γράψετε μια υπογράμμιση μπροστά στην τάξη, ως εξής: τάξη_ Το

Στην ουσία, η γραμμή που περιέχει το id γίνεται:

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, δύο ονόματα ετικετών και τα αντίστοιχα αναγνωριστικά ή κλάσεις τους.

Ας υποθέσουμε ότι θέλετε να διαγράψετε την τιμή των πουκάμισων από έναν ιστότοπο ηλεκτρονικού εμπορίου. Η παρακάτω κλάση ξύστρα εξάγει τις ετικέτες τιμής και πουκάμισου με τα αντίστοιχα αναγνωριστικά ή κατηγορίες και στη συνέχεια την επιστρέφει ως πλαίσιο δεδομένων Pandas με την τιμή 'Τιμή' και το όνομα Πουκάμισου ως ονόματα στηλών.

Βεβαιωθείτε ότι εσείς pip εγκατάσταση pandas μέσω του τερματικού εάν δεν το έχετε κάνει ήδη.

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!')

Η ξύστρα που μόλις φτιάξατε είναι μια επαναχρησιμοποιήσιμη μονάδα και μπορείτε να την εισαγάγετε και να τη χρησιμοποιήσετε σε άλλο αρχείο Python. Για να καλέσετε το ξύνω συνάρτηση από την κατηγορία του, χρησιμοποιείτε scrapeit.scrape ('URL ιστότοπου', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') Το Εάν δεν παρέχετε τη διεύθυνση URL και άλλες παραμέτρους, το αλλού δήλωση σας προτρέπει να το κάνετε.

Για να χρησιμοποιήσετε αυτό το scaper σε άλλο αρχείο Python, μπορείτε να το εισαγάγετε ως εξής:

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

Σημείωση: scraper_module είναι το όνομα του αρχείου Python που περιέχει την κλάση ξύστρα.

Μπορείτε επίσης να ελέγξετε το Όμορφη τεκμηρίωση σούπας αν θέλετε να εμβαθύνετε στο πώς μπορείτε να το αξιοποιήσετε καλύτερα.

Το Beautiful Soup Is a Valuable Web Scraping Tool

Το Beautiful Soup είναι ένα ισχυρό ξύστρα οθόνης Python που σας δίνει τον έλεγχο του τρόπου μετάδοσης των δεδομένων σας κατά τη διάρκεια της απόξεσης. Είναι ένα πολύτιμο επιχειρηματικό εργαλείο, καθώς μπορεί να σας δώσει πρόσβαση στα δεδομένα ιστού των ανταγωνιστών, όπως οι τιμές, οι τάσεις της αγοράς και πολλά άλλα.

τι να κάνετε αν σας έχουν χακάρει στο facebook

Παρόλο που έχουμε δημιουργήσει μια ξύστρα ετικετών σε αυτό το άρθρο, μπορείτε ακόμα να παίξετε με αυτήν την ισχυρή βιβλιοθήκη Python για να κάνετε πιο χρήσιμα εργαλεία απόξεσης.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Τα καλύτερα διαδικτυακά εργαλεία απόξεσης Ιστού

Χρειάζεστε συλλογή δεδομένων από ιστότοπους για αναλυτικούς σκοπούς; Αυτά τα εργαλεία απόξεσης ιστού το καθιστούν εύκολο.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
Σχετικά με τον Συγγραφέα Ηδίσου Ομισόλα(Δημοσιεύθηκαν 94 άρθρα)

Η Idowu είναι παθιασμένη με οτιδήποτε έξυπνη τεχνολογία και παραγωγικότητα. Στον ελεύθερο χρόνο του, παίζει με κωδικοποίηση και μεταβαίνει στη σκακιέρα όταν βαριέται, αλλά του αρέσει επίσης να ξεφεύγει από τη ρουτίνα κάθε τόσο. Το πάθος του για να δείξει στους ανθρώπους τον δρόμο γύρω από τη σύγχρονη τεχνολογία τον παρακινεί να γράψει περισσότερα.

Περισσότερα από το Idowu Omisola

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή