Saltar al contenido

Obtener el código HTML de una página web en Python y C#

HTML5

Vamos a realizar un pequeño ejercicio de Python, que consiste en extraer el código fuente de un sitio web. El código Python lo teneis en GitHub.

Código en Python

Para ello requerimos usar urllib2:

import time, urllib2

def gethtml(url):
try:
req = urllib2.Request(url)
return urllib2.urlopen(req).read()
except Exception, e:
time.sleep(2)
return ''
url = 'https://www.manejandodatos.es'
print gethtml(url)

El resultado no es sino el código HTML de la url:

Get HTML

Get HTML

Hemos conseguido nuestro objetivo, que era recuperar el código fuente HTML de una página. Si deseamos extraer información, habrá que trabajar con otros paquetes y librerías, aunque eso lo dejaremos para otra entrada.

Ahora, en C#

Para realizar exáctamente lo mismo en C#, necesitamos de 3 librerías, y unas 25-30 líneas en total:


<code>using System;
 using System.Net;
 using System.IO;</code>
 <code>
 namespace ConsoleApplication1
 {
 class Program
 {
 static void Main(string[] args)
 {
 Console.WriteLine( getSourceCode("http://www.google.es"));
 Console.ReadLine();
 }</code>
 <code>
 private static string getSourceCode(string uri)
 {
 string sourceCode = "";
 try
 { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 StreamReader sr = new StreamReader(response.GetResponseStream());
 sourceCode = sr.ReadToEnd();
 sr.Close();
 response.Close();
 return sourceCode; }
 catch
 { sourceCode = "ERROR"; }
 return sourceCode;
 } } }</code>

El código:

Código fuente en C#

Código fuente en C#

Y en ejecución:

Codigo fuente de una Web

Codigo fuente de una Web

Diferencias entre C# y Python

No existen diferencias en cuanto al objetivo, pues ambas lo consiguen sin complicación, y el tiempo de ejecución de ambas también es similar. Sin embargo, el código en Python es mucho más breve.

Para mi, la mayor diferencia entre un lenguaje y otro es que .NET requiere de más de 1 Gb instalado, mientras que Python son menos de 100 Mb, un tamaño considerablemente inferior.

Espero os sea de utilidad!

Manejando Datos Newsletter

Noticias, entradas, eventos, cursos, … News, entrances, events, courses, …


Gracias por unirte a la newsletter. Thanks for joining the newsletter.