Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: xassiz_ en 12 Abril 2010, 23:00 PM

Título: <Python> Regexp? Dudas con peticiones web
Publicado por: xassiz_ en 12 Abril 2010, 23:00 PM
Bueno, vuelvo con dudas en Python! :-\


Veamos, yo hago una petición a una web con urllib algo así:

Código (python) [Seleccionar]

#!/usr/bin/env python

import urllib

peticion = urllib.urlopen("http://www.web.com").read()


Y en el código de esa web quiero buscar unas URL con una estructura así:

Citarhttp://www.web.com/codigo.php?variable=XXXX
Donde "XXXX" son números

Que en HTML aparecerían así:
Código (PHP) [Seleccionar]

<a href="http://www.web.com/codigo.php?variable=XXXX">


Para eso hago algo así:
Código (python) [Seleccionar]

if '<a href="http://www.web.com/codigo.php?variable=' in peticion:
print "Contiene esas URL"
else:
print "No contiene ese tipo de URL"


Bien, esto funciona. Pero ahora es cuando quiero guardar el número de esos link en una variable o en un array para poder operar con ellos (ya que en la web puede haber más de uno).

He intentado hacer algo con regexp y [0-9] pero no consigo hacer nada >.<""


Alguna idea?
Título: Re: <Python> Regexp? Dudas con peticiones web
Publicado por: leogtz en 12 Abril 2010, 23:42 PM
Pon el código que has intentado

Para coger los numéros, necesitarías alguna regex como esta:

my $string = '<a href="http://www.web.com/codigo.php?variable=1234">';
$string =~ m/.*=(\d+).*\>$/g;


\d : Digito.
+ : Uno o más elementos.
$ : Fín de línea

Si pones solo [0-9], significa solo un digito, un digito de 0 a 9, no una serie de digitos.

Sé que es Perl, solo habría que adaptarlo un poco a código python y ya.
Título: Re: <Python> Regexp? Dudas con peticiones web
Publicado por: Shell Root en 13 Abril 2010, 01:16 AM
Seria algo como estó?
Código (php) [Seleccionar]
<?PHP /* PoC */
$strCadena = "<a href='http://www.shellroot.com/index.php?id=1'>URL</a>
<a href='http://www.shellroot.com/index.php?id=2'>URL</a>
<a href='http://www.shellroot.com/index.php?id=3'>URL</a>
<a href='http://www.shellroot.com/index.php?id=4'>URL</a>
<a href='http://www.shellroot.com/index.php?id=5'>URL</a>
<a href='http://www.shellroot.com/index.php?id=6'>URL</a>
<a href='http://www.shellroot.com/index.php?id=7'>URL</a>
<a href='http://www.shellroot.com/index.php?id=8'>URL</a>";

$strPalabras = preg_split("/id=/", $strCadena);

for($i=1;$i<=count($strPalabras);$i++){
echo preg_replace('/(\D+)/', '', $strPalabras[$i]).', ';
}  

?>


Resultado:
1, 2, 3, 4, 5, 6, 7, 8, ,