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 lorsqu’il utilise 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 requête venait de WGET et non d'un navigateur Web, et fournissait une page Web squelette, sans le tableau de données. Comment puis-je obtenir exactement la même page Web avec WGET? - THX!
PLUS D'INFORMATIONS:
Voici un exemple de l'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 de fonds mutuels. , que je changerai pour n’importe lequel des différents symboles boursiers. Cette opération télécharge une table de données lorsqu'elle est affichée dans un navigateur, mais la table de données est manquante si elle est extraite avec WGET.
Réponses:
Comme le note roadmr , le tableau de cette page est généré par javascript. wget ne prend pas en charge javascript, il vide simplement la page telle que 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, comme phantomjs :
avec save_page.js:
Ensuite, si vous voulez seulement extraire du texte, le plus simple serait de rendre la page avec w3m:
et / ou modifiez le script phantomjs pour simplement vider ce qui vous intéresse.
la source
Vous pouvez télécharger un site Web complet en utilisant
wget --mirror
Exemple:
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 À propos de toutes les commandes wget avec exemples ou consultez la page de manuel de Wget .
la source
Au lieu de
--recursive
, qui va juste aller 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.Pour plus d'informations,
man wget
recherchez l'--page-requisites
option (utilisez "/" pour effectuer une recherche en lisant une page de manuel).la source
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 demande 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 faire l'affaire
--user-agent=AGENT
.Si cela ne résout pas le problème, 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.
la source