Κοινή χρήση τεχνολογίας

【Scrapy】Κανόνες ρύθμισης επιπέδου μέσου λογισμικού Scrapy

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Επιτρέψτε μου να ξαναπαίξω με χαρά τον ρόλο του πρωταγωνιστή μιας συγκεκριμένης όμορφης ιστορίας
Παίξτε το ρόλο του εραστή με τον οποίο μοιραστήκατε τα όνειρά σας τα τελευταία χρόνια
Ας γίνουμε μια γλυκιά που δεν χύνει ξανά δάκρυα αγάπης
Προσποιούμενος ότι έχει τις ίδιες σκηνές με πριν
Επαναλάβετε τον ρόλο του πρωταγωνιστή μιας όμορφης ιστορίας
Παίξτε το ρόλο του εραστή με τον οποίο μοιραστήκατε τα όνειρά σας τα τελευταία χρόνια
Παρόλο που δεν καταλαβαίνεις, είσαι ακόμα μόνος αργά το βράδυ
Φόρεσε το αθόρυβο πουλόβερ σου σαν να είμαι κοντά σου
                     🎵 陈慧娴《傻女》


Το Scrapy είναι ένα ισχυρό πλαίσιο ανίχνευσης Χρησιμοποιώντας ενδιάμεσο λογισμικό, οι χρήστες μπορούν να προσαρμόσουν και να επεκτείνουν τη συμπεριφορά του προγράμματος ανίχνευσης. Το Middleware παρέχει έναν μηχανισμό για αιτήματα και απαντήσεις πριν και μετά την επεξεργασία, επιτρέποντας στους χρήστες να βελτιώσουν τη λειτουργικότητα του προγράμματος ανίχνευσης χωρίς να τροποποιήσουν τον βασικό κώδικα.

Στο Scrapy, η σειρά με την οποία εκτελείται το ενδιάμεσο λογισμικό καθορίζεται από την «προτεραιότητά» τους. Η κατανόηση και η σωστή ρύθμιση της ιεραρχίας του ενδιάμεσου λογισμικού είναι ζωτικής σημασίας για τη δημιουργία ενός αποτελεσματικού και διατηρήσιμου προγράμματος ανίχνευσης.

Τι είναι το ενδιάμεσο λογισμικό;

Το Middleware είναι ένα άγκιστρο στο Scrapy που επιτρέπει στους χρήστες να εκτελούν προσαρμοσμένο κώδικα κατά την επεξεργασία αιτημάτων και απαντήσεων. Το Middleware χωρίζεται σε δύο κατηγορίες:

  • Downloader Middleware: Χειρίζεται αιτήματα και απαντήσεις που σχετίζονται με το πρόγραμμα λήψης.
  • Spider Middleware: χειρίζεται την είσοδο και την έξοδο που σχετίζεται με την αράχνη.

Επίπεδο μεσαίου λογισμικού

Το επίπεδο του ενδιάμεσου λογισμικού καθορίζει τη σειρά με την οποία εκτελούνται. Το Scrapy χρησιμοποιεί μια ακέραια τιμή για να αναπαραστήσει το επίπεδο του ενδιάμεσου λογισμικού.

  • Μέσο λογισμικό λήψης
    Το ενδιάμεσο λογισμικό του προγράμματος λήψης βρίσκεται μεταξύ του προγράμματος λήψης του Scrapy και του κινητήρα. Ακολουθεί ένα παράδειγμα διαμόρφωσης:
DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.CustomDownloaderMiddleware': 543,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 500,
}
  • 1
  • 2
  • 3
  • 4
  • 5

Στην παραπάνω διαμόρφωση:

CustomDownloaderMiddleware 的等级为 543
UserAgentMiddleware 的等级为 400
RetryMiddleware 的等级为 500
  • 1
  • 2
  • 3

Η σειρά εκτέλεσης είναι η εξής:

UserAgentMiddleware(400)
RetryMiddleware(500)
CustomDownloaderMiddleware(543)
  • 1
  • 2
  • 3

Τα αιτήματα προέρχονται από τον κινητήρα, περνούν από ενδιάμεσο λογισμικό χαμηλότερου επιπέδου και τελικά φτάνουν στο πρόγραμμα λήψης. Όταν η απόκριση επιστρέφει από το πρόγραμμα λήψης, περνά πρώτα από ενδιάμεσο λογισμικό υψηλότερου επιπέδου και τελικά φτάνει στον κινητήρα.

Spider Middleware

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

SPIDER_MIDDLEWARES = {
    'myproject.middlewares.CustomSpiderMiddleware': 543,
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
}
  • 1
  • 2
  • 3
  • 4
  • 5

Στην παραπάνω διαμόρφωση:

CustomSpiderMiddleware 的等级为 543
HttpErrorMiddleware 的等级为 50
OffsiteMiddleware 的等级为 500
  • 1
  • 2
  • 3

Η σειρά εκτέλεσης είναι η εξής:

HttpErrorMiddleware(50)
OffsiteMiddleware(500)
CustomSpiderMiddleware(543)
  • 1
  • 2
  • 3

Τα αιτήματα προέρχονται από τον κινητήρα, περνούν από ενδιάμεσο λογισμικό χαμηλότερου επιπέδου και τελικά φτάνουν στον ανιχνευτή. Όταν η απόκριση επιστρέφει από τον ανιχνευτή, περνά πρώτα από ενδιάμεσο λογισμικό υψηλότερου επιπέδου και τελικά φτάνει στον κινητήρα.

Πώς να ορίσετε το επίπεδο του ενδιάμεσου λογισμικού

Για να ορίσετε το επίπεδο του ενδιάμεσου λογισμικού, πρέπει να ορίσετε το αντίστοιχο λεξικό στο αρχείο ρύθμισης παραμέτρων του Scrapy settings.py και να καθορίσετε τη διαδρομή και το επίπεδο του ενδιάμεσου λογισμικού. Για παράδειγμα:

DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.CustomDownloaderMiddleware': 543,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
}

SPIDER_MIDDLEWARES = {
    'myproject.middlewares.CustomSpiderMiddleware': 543,
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Σε αυτό το παράδειγμα, ορίζουμε ένα ενδιάμεσο λογισμικό λήψης CustomDownloaderMiddleware και ένα ενδιάμεσο λογισμικό ανίχνευσης CustomSpiderMiddleware και ορίζουμε τα επίπεδά τους σε 543 αντίστοιχα.

Κοινό ενδιάμεσο λογισμικό και τα προεπιλεγμένα τους επίπεδα

Το Scrapy παρέχει πολλά ενσωματωμένα ενδιάμεσα προγράμματα, το καθένα με ένα προεπιλεγμένο επίπεδο. Ακολουθούν ορισμένα κοινά ενδιάμεσα προγράμματα λήψης και τα προεπιλεγμένα επίπεδά τους:

UserAgentMiddleware: 400
RetryMiddleware: 500
RedirectMiddleware: 600
CookiesMiddleware: 700
  • 1
  • 2
  • 3
  • 4

Για το ενδιάμεσο λογισμικό ανίχνευσης, τα κοινά περιλαμβάνουν:

HttpErrorMiddleware: 50
OffsiteMiddleware: 500
RefererMiddleware: 700
  • 1
  • 2
  • 3

Συμπερασματικά

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