2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ο ανιχνευτής Ιστού είναι ένα πρόγραμμα που χρησιμοποιείται για την αυτόματη ανάκτηση περιεχομένου ιστού. Προσομοιώνει τη διαδικασία περιήγησης των χρηστών σε ιστοσελίδες, λαμβάνει τον πηγαίο κώδικα των ιστοσελίδων στέλνοντας αιτήματα HTTP και χρησιμοποιεί τεχνολογία ανάλυσης και εξαγωγής για τη λήψη των απαιτούμενων δεδομένων.
Ο ανιχνευτής στέλνει ένα αίτημα HTTP στον ιστότοπο προορισμού Το αίτημα περιλαμβάνει τη διεύθυνση URL, τη μέθοδο αιτήματος (όπως GET ή POST), τις κεφαλίδες αιτημάτων (Κεφαλίδες) κ.λπ. Αφού ο διακομιστής λάβει το αίτημα, θα επιστρέψει μια απάντηση HTTP, η οποία περιέχει κωδικό κατάστασης, κεφαλίδα απάντησης και σώμα απάντησης (περιεχόμενο ιστοσελίδας).
requests
καιaiohttp
, χρησιμοποιείται για την αποστολή αιτημάτων HTTP.BeautifulSoup
、lxml
καιPyQuery
, που χρησιμοποιείται για την ανάλυση του περιεχομένου της ιστοσελίδας.pandas
καιSQLite
, που χρησιμοποιείται για την αποθήκευση δεδομένων ανίχνευσης.asyncio
καιaiohttp
, χρησιμοποιείται για την εφαρμογή ασύγχρονων ανιχνευτών και τη βελτίωση της αποτελεσματικότητας ανίχνευσης.Στη συνέχεια, θα χρησιμοποιήσουμε 7 μικρές περιπτώσεις Python crawlers για να σας βοηθήσουμε να μάθετε και να κατανοήσετε καλύτερα τις βασικές γνώσεις των Python crawlers. Ακολουθεί μια εισαγωγή και ο πηγαίος κώδικας για κάθε περίπτωση:
Αυτή η περίπτωση χρησιμοποιείBeautifulSoup
Η βιβλιοθήκη ανιχνεύει πληροφορίες όπως τίτλους ταινιών, βαθμολογίες και αριθμό κριτικών από τις 250 κορυφαίες ταινίες Douban και αποθηκεύει αυτές τις πληροφορίες σε ένα αρχείο CSV.
- import requests
- from bs4 import BeautifulSoup
- import csv
-
- # 请求URL
- url = 'https://movie.douban.com/top250'
- # 请求头部
- headers = {
- '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'
- }
-
- # 解析页面函数
- def parse_html(html):
- soup = BeautifulSoup(html, 'lxml')
- movie_list = soup.find('ol', class_='grid_view').find_all('li')
- for movie in movie_list:
- title = movie.find('div', class_='hd').find('span', class_='title').get_text()
- rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
- comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
- writer.writerow([title, rating_num, comment_num])
-
- # 保存数据函数
- def save_data():
- f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
- global writer
- writer = csv.writer(f)
- writer.writerow(['电影名称', '评分', '评价人数'])
- for i in range(10):
-