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

Αρχές προγράμματος ανίχνευσης Python και 3 μικρές θήκες (πηγαίος κώδικας)

2024-07-11

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

1. Αρχή ερπετών

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

1. Διαδικασία αιτήματος και απόκρισης HTTP

Ο ανιχνευτής στέλνει ένα αίτημα HTTP στον ιστότοπο προορισμού Το αίτημα περιλαμβάνει τη διεύθυνση URL, τη μέθοδο αιτήματος (όπως GET ή POST), τις κεφαλίδες αιτημάτων (Κεφαλίδες) κ.λπ. Αφού ο διακομιστής λάβει το αίτημα, θα επιστρέψει μια απάντηση HTTP, η οποία περιέχει κωδικό κατάστασης, κεφαλίδα απάντησης και σώμα απάντησης (περιεχόμενο ιστοσελίδας).

2. Τεχνολογίες ανίχνευσης που χρησιμοποιούνται συνήθως

  • βιβλιοθήκη αιτημάτων:Για παράδειγμαrequestsκαιaiohttp, χρησιμοποιείται για την αποστολή αιτημάτων HTTP.
  • Βιβλιοθήκη ανάλυσης:Για παράδειγμαBeautifulSouplxmlκαιPyQuery, που χρησιμοποιείται για την ανάλυση του περιεχομένου της ιστοσελίδας.
  • αποθήκη:Για παράδειγμαpandasκαιSQLite, που χρησιμοποιείται για την αποθήκευση δεδομένων ανίχνευσης.
  • Ασύγχρονη βιβλιοθήκη:Για παράδειγμαasyncioκαιaiohttp, χρησιμοποιείται για την εφαρμογή ασύγχρονων ανιχνευτών και τη βελτίωση της αποτελεσματικότητας ανίχνευσης.

2. Βιβλιοθήκες που χρησιμοποιούνται συνήθως για ανιχνευτές Python

1. Βιβλιοθήκη αιτημάτων

  • αιτήσεων: Μια απλή και ισχυρή βιβλιοθήκη HTTP που υποστηρίζει τη διατήρηση της σύνδεσης HTTP και τη συγκέντρωση συνδέσεων, την επαλήθευση πιστοποιητικού SSL, τα cookies κ.λπ.
  • aiohttp: Μια ασύγχρονη βιβλιοθήκη HTTP βασισμένη σε asyncio, κατάλληλη για σενάρια ανιχνευτή υψηλού συγχρονισμού.

2. Βιβλιοθήκη ανάλυσης

  • Όμορφη Σούπα: Μια βιβλιοθήκη για ανάλυση HTML και XML, εύκολη στη χρήση και υποστηρίζει πολλαπλούς αναλυτές.
  • lxml: Μια αποτελεσματική βιβλιοθήκη ανάλυσης XML και HTML που υποστηρίζει επιλογείς XPath και CSS.
  • PyQuery: Μια έκδοση Python του jQuery με παρόμοια σύνταξη με το jQuery και εύκολη στη χρήση.

3. Αποθετήριο

  • τα πάντα: Μια ισχυρή βιβλιοθήκη ανάλυσης δεδομένων που παρέχει δομές δεδομένων και εργαλεία ανάλυσης δεδομένων και υποστηρίζει πολλαπλές μορφές αρχείων.
  • SQLite: Μια ελαφριά βάση δεδομένων που υποστηρίζει ερωτήματα SQL και είναι κατάλληλη για μικρά έργα ανίχνευσης.

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

Περίπτωση 1: Αναζητήστε τις 250 κορυφαίες ταινίες Douban

Αυτή η περίπτωση χρησιμοποιείBeautifulSoupΗ βιβλιοθήκη ανιχνεύει πληροφορίες όπως τίτλους ταινιών, βαθμολογίες και αριθμό κριτικών από τις 250 κορυφαίες ταινίες Douban και αποθηκεύει αυτές τις πληροφορίες σε ένα αρχείο CSV.

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import csv
  4. # 请求URL
  5. url = 'https://movie.douban.com/top250'
  6. # 请求头部
  7. headers = {
  8. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
  9. }
  10. # 解析页面函数
  11. def parse_html(html):
  12. soup = BeautifulSoup(html, 'lxml')
  13. movie_list = soup.find('ol', class_='grid_view').find_all('li')
  14. for movie in movie_list:
  15. title = movie.find('div', class_='hd').find('span', class_='title').get_text()
  16. rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
  17. comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
  18. writer.writerow([title, rating_num, comment_num])
  19. # 保存数据函数
  20. def save_data():
  21. f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
  22. global writer
  23. writer = csv.writer(f)
  24. writer.writerow(['电影名称', '评分', '评价人数'])
  25. for i in range(10):
  26. url = 'https://movie.douban.com/top250?start=' str(i * 25) '