Condivisione della tecnologia

Principi del crawler Python e 3 piccoli casi (codice sorgente)

2024-07-11

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

1. Principio dei rettili

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.

1. Processo di richiesta e risposta HTTP

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).

2. Tecnologie crawler comunemente utilizzate

  • richiedere la libreria:Per esempiorequestsEaiohttp, utilizzato per inviare richieste HTTP.
  • Libreria di analisi:Per esempioBeautifulSouplxmlEPyQuery, utilizzato per analizzare il contenuto della pagina Web.
  • deposito:Per esempiopandasESQLite, utilizzato per archiviare i dati sottoposti a scansione.
  • Libreria asincrona:Per esempioasyncioEaiohttp, utilizzato per implementare crawler asincroni e migliorare l'efficienza della scansione.

2. Librerie comunemente utilizzate per i crawler Python

1. Richiedi biblioteca

  • richieste: una libreria HTTP semplice e potente che supporta la persistenza della connessione HTTP e il pooling di connessioni, la verifica del certificato SSL, i cookie, ecc.
  • aiohttp: una libreria HTTP asincrona basata su asyncio, adatta a scenari di crawler ad alta concorrenza.

2. Libreria di analisi

  • ZuppaBellissima: Una libreria per l'analisi di HTML e XML, facile da usare e supporta più parser.
  • lxml: un'efficiente libreria di analisi XML e HTML che supporta i selettori XPath e CSS.
  • Query di ricerca: una versione Python di jQuery con sintassi simile a jQuery e facile da usare.

3. Deposito

  • panda: una potente libreria di analisi dei dati che fornisce strutture di dati e strumenti di analisi dei dati e supporta più formati di file.
  • SQLite: un database leggero che supporta query SQL ed è adatto a piccoli progetti crawler.

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:

Caso 1: scansione dei 250 migliori film di Douban

Questo caso utilizzaBeautifulSoupLa 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.

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