2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Un web crawler è un programma utilizzato per recuperare automaticamente i contenuti web. Simula il processo di navigazione degli utenti nelle pagine Web, ottiene il codice sorgente delle pagine Web inviando richieste HTTP e utilizza la tecnologia di analisi ed estrazione per ottenere i dati richiesti.
Il crawler invia una richiesta HTTP al sito Web di destinazione La richiesta include l'URL, il metodo di richiesta (come GET o POST), le intestazioni della richiesta (Headers), ecc. Dopo che il server ha ricevuto la richiesta, restituirà una risposta HTTP, che contiene il codice di stato, l'intestazione della risposta e il corpo della risposta (contenuto della pagina web).
requests
Eaiohttp
, utilizzato per inviare richieste HTTP.BeautifulSoup
、lxml
EPyQuery
, utilizzato per analizzare il contenuto della pagina Web.pandas
ESQLite
, utilizzato per archiviare i dati sottoposti a scansione.asyncio
Eaiohttp
, utilizzato per implementare crawler asincroni e migliorare l'efficienza della scansione.Successivamente, utilizzeremo 7 piccoli casi di crawler Python per aiutarti ad apprendere e comprendere meglio le conoscenze di base dei crawler Python. Di seguito è riportata un'introduzione e il codice sorgente per ciascun caso:
Questo caso utilizzaBeautifulSoup
La libreria esegue la scansione di informazioni come titoli di film, valutazioni e numero di revisori dei 250 migliori film di Douban e salva queste informazioni in un file 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):
-