web-dev-qa-db-fra.com

Comment exporter le code source HTML d'une page Web dans un fichier

Mon objectif est de générer une source HTML dans un fichier. J'utilise w3m pour naviguer sur le Web à partir d'un terminal.

Lors de l'utilisation de la commande suivante sur le terminal: w3m <url> -dump, le programme affiche le site Web de manière non interactive, mais pas sa source HTML.

Si vous ouvrez un site Web avec w3m <url>, le terminal affichera le site et si vous appuyez sur v , le programme affichera le code HTML. source, j’ai essayé d’en faire un script mais sans succès. Je pensais que l'argument de ligne de commande -dump_source pourrait m'aider, mais tout ce que j'ai obtenu est un contenu de lecture non humain, je ne sais pas ce que -dump_source était censé retourner.

Voici ce que j'ai essayé jusqu'à présent:

  • Utilisez -T text/html avec -dump sur le terminal mais la sortie n'a pas changé
  • Utilisez -T text/plain avec -dump_source sur le terminal en espérant que la sortie non humaine sera convertie en texte brut, mais sans succès (je ne comprenais pas à quoi servait -T, même après avoir lu le manuel w3m en tapant man w3m sur le terminal)
  • Sachant que si vous appuyez sur v lorsque w3m affiche un site Web basculer du contenu de la page Web au code source HTML, j'ai essayé d'utiliser gdb pour l’attacher au processus w3m et rediriger ses stdin et ) stdout à mes fichiers (input.txt, output.txt), lequel input.txt contient un seul v , mais je n'ai eu aucun succès. Faire cela sur mon programme de test a fonctionné comme prévu. J'ai suivi ce qui a été décrit ici . Si j'écris ls -l /proc/<w3m_pid>/fd, où w3m_pid est mon identificateur de processus w3m que j'ai obtenu en utilisant ps ax sur un terminal, je peux voir qu'il y a 3 descripteurs de fichier. Si j'essaie de rediriger le troisième, le programme se bloque. et affiche: Une erreur est survenue: errorno = 25
  • La redirection des E/S standard avec w3m <url> < input.txt > output.txt n'a également pas fonctionné
  • W3M utilise le raccourci clavier pour naviguer sur le Web. Cela signifie que si vous appuyez sur v , il n'est pas nécessaire d'appuyer sur Entrée, le terminal ne met pas en mémoire tampon l'entrée, en utilisant gdb attaché au processus w3m, j’ai essayé de le supprimer en utilisant p system ("/bin/stty cooked"), mais l’attribut w3m n’a pas changé.

Ma question est la suivante: pourquoi la redirection d'E/S avec gdb ne fonctionne-t-elle pas et que puis-je faire pour obtenir le code source HTML? w3m a une option pour sortir le code source HTML qui me manque ou je devrais utiliser un autre programme?

PS: J'ai besoin de code source HTML pour les devoirs d'une université. Avec le code source HTML, je peux créer un script pour parcourir le Web et afficher la page dans un fichier. Je suis censé utiliser ces sorties avec flex pour extraire des informations statiques sur des éléments sur le Web, comme: combien de la pile de mots apparaît dans les questions sur le langage c? C'est mon idée.

Toute suggestion serait appréciée.

Version W3M: 0.5.3 + debian-15

Version GDB: 7.7.1

Version Ubuntu: 14.04

Merci d'avance!

1
Murillo Henrique

Pourquoi ne pouvez-vous pas utiliser curl?

curl web-address > file-source.

va sortir le code source dans le file

Comme ça

curl http://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file > source-html
6
Anwar