Crawler : un programme qui obtient automatiquement les données du réseau.
Structure des pages Web : HTML, CSS, JavaScript, etc.
Requête HTTP : Comment le client demande des données au serveur.
Réponse HTTP : Données renvoyées par le serveur au client.
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)
Obtenir le contenu de la réponse
html_content = response.text
Utilisez la bibliothèque BeautifulSoup pour analyser le contenu HTML.
from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, "html.parser")
Utilisez des sélecteurs CSS ou d'autres méthodes pour extraire des données.
title = soup.title.string
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
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)
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)
import time time.sleep(10)
try: response = requests.get(url, headers=headers, timeout=5) response.raise_for_status() except requests.exceptions.RequestException as e: print(f"Error: {e}")
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.")
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 :
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.
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.
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).
URL : Un Uniform Resource Locator (URL) est une chaîne de caractères utilisée pour spécifier l'emplacement d'une ressource Internet.
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.
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.
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!