Utilisation d'un navigateur Web (IE ou Chrome) Je peux enregistrer une page Web (.html) avec Ctl-S, l'inspecter avec n'importe quel éditeur de texte et afficher les données sous forme de tableau. Un de ces chiffres que je veux extraire, mais pour beaucoup, beaucoup de pages Web, trop pour être fait manuellement. J'aimerais donc utiliser WGET pour obtenir ces pages Web l'une après l'autre et écrire un autre programme pour analyser le fichier .html et récupérer le numéro que je veux. Mais le fichier .html enregistré par WGET lors de l'utilisation de la même URL que le navigateur ne contient pas la table de données. Pourquoi pas? C'est comme si le serveur détectait que la demande venait de WGET et non d'un navigateur Web et fournissait une page Web squelette, sans la table de données. Comment puis-je obtenir exactement la même page Web avec WGET? - THX!
PLUS D'INFORMATIONS:
Voici un exemple d’URL que j’essaie d’extraire: http://performance.morningstar.com/fund/performance-return.action?t=ICENX®ion=usa&culture=en-US où la chaîne ICENX est un symbole boursier des fonds communs de placement, que je changerai pour l’un des nombreux symboles boursiers. Cela télécharge une table de données lorsqu'il est affiché dans un navigateur, mais la table de données est manquante si elle est extraite avec WGET.
Comme roadmr noté, le tableau de cette page est généré par javascript. wget ne prend pas en charge javascript, il vide simplement la page telle qu'elle a été reçue du serveur (c'est-à-dire avant tout code javascript) et le tableau est manquant.
Vous avez besoin d'un navigateur sans navigateur prenant en charge javascript, tel que phantomjs :
$ phantomjs save_page.js http://example.com > page.html
avec save_page.js:
var system = require('system');
var page = require('webpage').create();
page.open(system.args[1], function()
{
console.log(page.content);
phantom.exit();
});
Ensuite, si vous voulez seulement extraire du texte, le plus simple serait de rendre la page avec w3m:
$ w3m -dump page.html
et/ou modifiez le script phantomjs pour simplement vider ce qui vous intéresse.
Vous pouvez télécharger un site Web complet à l'aide de wget --mirror
Exemple:
wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
La ligne de commande ci-dessus que vous souhaitez exécuter lorsque vous souhaitez télécharger un site Web complet et mise à disposition pour un affichage local.
Options:
--mirror
active les options appropriées pour la mise en miroir.
-p
télécharge tous les fichiers nécessaires pour afficher correctement une page HTML donnée.
--convert-links
après le téléchargement, convertissez les liens dans le document pour une visualisation locale.
-P ./LOCAL-DIR
enregistre tous les fichiers et répertoires dans le répertoire spécifié.
Pour plus d'informations sur les options Wget Lisez cet article: Présentation de toutes les commandes wget avec exemples , ou cochez la case page de manuel de Wget .
Au lieu de --recursive
, qui ira juste de l'avant et "spider" chaque lien dans votre URL, utilisez --page-requisites
. Devrait se comporter exactement comme les options que vous décrivez dans les navigateurs graphiques.
This option causes Wget to download all the files that are
necessary to properly display a given HTML page. This includes
such things as inlined images, sounds, and referenced stylesheets.
Ordinarily, when downloading a single HTML page, any requisite
documents that may be needed to display it properly are not
downloaded. Using -r together with -l can help, but since Wget
does not ordinarily distinguish between external and inlined
documents, one is generally left with "leaf documents" that are
missing their requisites.
Pour plus d'informations, utilisez man wget
et recherchez l'option --page-requisites
(utilisez "/" pour effectuer une recherche en lisant une page de manuel).
Si la réponse du serveur diffère en fonction de la source demandée, c'est principalement à cause de la variable HTTP_USER_AGENT (juste une chaîne de texte) qui est fournie avec une requête de la source demandeuse, informant le serveur de la technologie.
Vous pouvez vérifier votre agent de navigateur ici -> http://whatsmyuseragent.com
Selon le manuel WGET, ce paramètre devrait exécuter le travail --user-agent=AGENT
.
Si cela ne vous aide pas, c'est-à-dire qu'un traitement JavaScript peut être nécessaire pour obtenir la même page qu'un navigateur, ou une requête appropriée avec des paramètres GET afin que le serveur prépare une réponse ne nécessitant pas l'utilisation de JavaScript pour remplir la page.
Il y a le paramètre --recursive
. Il téléchargera tout, parfois plus que ce que vous voulez.
wget --recursive http://url.com