Maison > développement back-end > Tutoriel Python > Exemple d'analyse de code d'introduction à la technologie du robot d'exploration Python

Exemple d'analyse de code d'introduction à la technologie du robot d'exploration Python

王林
Libérer: 2023-04-22 13:04:07
avant
1283 Les gens l'ont consulté

Concepts de base de la technologie des robots d'exploration

  1. Crawler : un programme qui obtient automatiquement les données du réseau.

  2. Structure des pages Web : HTML, CSS, JavaScript, etc.

  3. Requête HTTP : Comment le client demande des données au serveur.

  4. Réponse HTTP : Données renvoyées par le serveur au client.

Demandes et réponses

Utilisez la bibliothèque de requêtes de Python pour envoyer des requêtes HTTP.

import requests
 
url = "https://www.example.com"
response = requests.get(url)
Copier après la connexion

Obtenir le contenu de la réponse

html_content = response.text
Copier après la connexion

Analyse HTML et extraction de données

Utilisez la bibliothèque BeautifulSoup pour analyser le contenu HTML.

from bs4 import BeautifulSoup
 
soup = BeautifulSoup(html_content, "html.parser")
Copier après la connexion

Utilisez des sélecteurs CSS ou d'autres méthodes pour extraire des données.

title = soup.title.string
Copier après la connexion

Combat pratique : explorez les informations de l'article sur la page d'accueil du site de Jianshu

Envoyez une demande pour obtenir le contenu HTML de la page d'accueil du site de Jianshu.

import requests
from bs4 import BeautifulSoup
 
url = "https://www.jianshu.com"
response = requests.get(url)
html_content = response.text
Copier après la connexion

Stocker les données

Stocker les données au format JSON.

import json
 
with open("jianshu_articles.json", "w", encoding="utf-8") as f:
    json.dump(article_info_list, f, ensure_ascii=False, indent=4)
Copier après la connexion

Test et optimisation

1. Lorsque vous rencontrez des stratégies anti-crawler, vous pouvez utiliser User-Agent pour vous faire passer pour un navigateur.

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.3"}
response = requests.get(url, headers=headers)
Copier après la connexion

2. Utilisez la fonction time.sleep() pour contrôler la fréquence des requêtes.

import time
 
time.sleep(10)
Copier après la connexion

3. Gestion des erreurs et détection des exceptions.

try:
    response = requests.get(url, headers=headers, timeout=5)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
Copier après la connexion

Code complet du robot d'exploration de site Web :

import requests
from bs4 import BeautifulSoup
import json
import time
 
def fetch_jianshu_articles():
    url = "https://www.jianshu.com"
    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.3"}
 
    try:
        response = requests.get(url, headers=headers, timeout=5)
        response.raise_for_status()
    except requests.exceptions.RequestException as e:
        print(f"Error: {e}")
        return
 
    html_content = response.text
    soup = BeautifulSoup(html_content, "html.parser")
    articles = soup.find_all("div", class_="content")
    article_info_list = []
 
    for article in articles:
        title = article.h3.text.strip()
        author = article.find("span", class_="name").text.strip()
        link = url + article.h3.a["href"]
 
        article_info = {"title": title, "author": author, "link": link}
        article_info_list.append(article_info)
 
    return article_info_list
 
def save_to_json(article_info_list, filename):
    with open(filename, "w", encoding="utf-8") as f:
        json.dump(article_info_list, f, ensure_ascii=False, indent=4)
 
if __name__ == "__main__":
    article_info_list = fetch_jianshu_articles()
    if article_info_list:
        save_to_json(article_info_list, "jianshu_articles.json")
        print("Jianshu articles saved to 'jianshu_articles.json'.")
    else:
        print("Failed to fetch Jianshu articles.")
Copier après la connexion

Supplémentaire

Afin de mieux comprendre ce projet pratique, nous devons comprendre quelques concepts et principes de base, qui nous aideront à maîtriser la programmation réseau et la technologie des robots d'exploration de Python. Voici quelques concepts de base de l'exploration du Web :

  1. Protocole HTTP : Hypertext Transfer Protocol (HTTP) est un protocole de couche application utilisé pour transmettre des documents hypermédia tels que HTML. Le protocole HTTP est utilisé pour transmettre ou publier des données d'un serveur Web vers un navigateur Web ou un autre client.

  2. HTML, CSS et JavaScript : HTML est un langage utilisé pour décrire les pages Web. CSS est un style utilisé pour exprimer la structure du HTML. JavaScript est un langage de script pour la programmation Web, principalement utilisé pour obtenir des effets dynamiques sur les pages Web et interagir avec les utilisateurs.

  3. DOM : Le Document Object Model (DOM) est une interface de programmation multiplateforme pour le traitement des documents HTML et XML. DOM traite un document comme une structure arborescente, où chaque nœud représente une partie (telle qu'un élément, un attribut ou un texte).

  4. URL : Un Uniform Resource Locator (URL) est une chaîne de caractères utilisée pour spécifier l'emplacement d'une ressource Internet.

  5. En-têtes de requête : dans les requêtes HTTP, les en-têtes de requête contiennent des informations sur l'environnement du client, le navigateur, etc. Les champs d'en-tête de requête courants incluent : User-Agent, Accept, Referer, etc.

  6. En-têtes de réponse : dans la réponse HTTP, l'en-tête de réponse contient des informations sur le serveur, le code d'état de la réponse et d'autres informations. Les champs d'en-tête de réponse courants incluent : Content-Type, Content-Length, Server, etc.

  7. Stratégies des robots d'exploration Web : certains sites Web adopteront certaines stratégies pour empêcher les robots d'exploration d'explorer les données, telles que : bloquer l'adresse IP, limiter la vitesse d'accès, utiliser JavaScript pour charger dynamiquement les données, etc. Dans les applications pratiques, nous devons prendre les contre-mesures correspondantes basées sur ces stratégies, telles que l'utilisation d'une adresse IP proxy, la limitation de la vitesse d'exploration des robots, l'utilisation de bibliothèques de simulation de navigateur (telles que Selenium), etc.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal