Nous ne voulons qu'un élément particulier du document HTML à nytimes.com/technology. Cette page contient de nombreux articles, mais nous ne voulons que le titre de l'article, qui se trouve dans une zone de texte. Si nous utilisons wget, cURL, ou tout autre outil ou paquetage comme demandes en Python , le document HTML entier est renvoyé. Peut-on limiter les données renvoyées à des éléments spécifiques, tels que les 's' ?
Réponses
Trop de publicités?Le protocole HTTP ne sait rien de HTML ou de DOM. Le protocole HTTP permet d'extraire des documents partiels des serveurs web en utilisant la fonction Content-Range
mais vous devrez connaître les décalages d'octets des données que vous souhaitez obtenir.
La réponse courte est que le service web lui-même doit prendre en charge ce que vous demandez. Ce n'est pas quelque chose qui peut être fourni au niveau de la couche HTTP.
Si vous souhaitez spécifiquement traiter des parties d'un document HTML situé à l'adresse URL que vous avez indiquée, vous ne vous y prenez probablement pas de la bonne manière. Si vous ne voulez qu'une liste d'articles, par titre par exemple, alors ce que vous voulez, c'est le flux web. Dans ce cas, le Times publie un Flux RSS de cette même catégorie d'articles. Remarque : si vous accédez à cette page avec un navigateur, celui-ci reconnaîtra qu'il s'agit d'un flux et le traitera à un niveau supérieur, c'est-à-dire qu'il vous demandera si vous souhaitez vous abonner au flux. Mais vous pouvez aussi utiliser curl et voir un flux XML non analysé. Chaque élément du flux représente un article et contient des métadonnées telles que l'URL de l'article complet, le titre, etc.
Notez également qu'il existe probablement des paquets spécifiques aux flux web, quelle que soit la plate-forme linguistique que vous utilisez, qui vous donneront un accès de haut niveau aux données des flux. Cela vous permettra d'écrire du code comme :
foreach ( article in feed )
title = article.getTitle();
plutôt que d'analyser le xml vous-même.
Oui, cURL a la capacité de seulement télécharge les en-têtes du fichier HTML et non le reste du contenu. Utiliser la fonction -I
pour émettre un HEAD
demande http.
A partir de la page Man :
-I, --head
(HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature the command HEAD which this uses to get nothing but the header of a document. When used on a FTP or FILE file, curl displays the file size and last modification time only.