Partage de technologie

Principes du robot Python et 3 petits cas (code source)

2024-07-11

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

1. Principe des reptiles

Un robot d'exploration Web est un programme utilisé pour récupérer automatiquement du contenu Web. Il simule le processus de navigation des utilisateurs sur les pages Web, obtient le code source des pages Web en envoyant des requêtes HTTP et utilise la technologie d'analyse et d'extraction pour obtenir les données requises.

1. Processus de requête et de réponse HTTP

Le robot d'exploration envoie une requête HTTP au site Web cible. La requête inclut l'URL, la méthode de requête (telle que GET ou POST), les en-têtes de requête (Headers), etc. Une fois que le serveur a reçu la demande, il renvoie une réponse HTTP contenant le code d'état, l'en-tête de la réponse et le corps de la réponse (contenu de la page Web).

2. Technologies de robots d'exploration couramment utilisées

  • demander une bibliothèque:Par exemplerequestsetaiohttp, utilisé pour envoyer des requêtes HTTP.
  • Bibliothèque d'analyse:Par exempleBeautifulSouplxmletPyQuery, utilisé pour analyser le contenu d'une page Web.
  • dépôt:Par exemplepandasetSQLite, utilisé pour stocker les données analysées.
  • Bibliothèque asynchrone:Par exempleasyncioetaiohttp, utilisé pour implémenter des robots d'exploration asynchrones et améliorer l'efficacité de l'exploration.

2. Bibliothèques couramment utilisées pour les robots d'exploration Python

1. Demander une bibliothèque

  • demandes: Une bibliothèque HTTP simple et puissante qui prend en charge la persistance et le regroupement de connexions HTTP, la vérification des certificats SSL, les cookies, etc.
  • aiohttp: Une bibliothèque HTTP asynchrone basée sur asyncio, adaptée aux scénarios de robots d'exploration à haute concurrence.

2. Bibliothèque d'analyse

  • Belle Soupe: Une bibliothèque d'analyse HTML et XML, facile à utiliser et prenant en charge plusieurs analyseurs.
  • lxml: Une bibliothèque d'analyse XML et HTML efficace qui prend en charge les sélecteurs XPath et CSS.
  • PyRequête: Une version Python de jQuery avec une syntaxe similaire à jQuery et facile à utiliser.

3. Référentiel

  • pandas: Une puissante bibliothèque d'analyse de données qui fournit des structures de données et des outils d'analyse de données et prend en charge plusieurs formats de fichiers.
  • SQLite: Une base de données légère qui prend en charge les requêtes SQL et convient aux petits projets d'exploration.

Ensuite, nous utiliserons 7 petits cas de robots Python pour vous aider à mieux apprendre et comprendre les connaissances de base des robots Python. Ce qui suit est une introduction et un code source pour chaque cas :

Cas 1 : Explorez les 250 meilleurs films Douban

Ce cas utiliseBeautifulSoupLa bibliothèque explore des informations telles que les titres de films, les notes et le nombre de critiques des 250 meilleurs films Douban, et enregistre ces informations dans un fichier 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) '