comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Urls + python

  • 15 Respuestas
  • 3660 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Marzo 02, 2013, 02:15:23 am »
Hola, leí los tutoriales de Python de esta sección y hasta ahí todo bien. Pero no he encontrado nada que explique el manejo de Urls y Python. Me explico, si quiero chequear una url en python para diversas cosas, ¿qué comandos debo usar? Tienen algún tutorial donde expliquen esto? :D

Fundamentalmente quiero hacer algo como esto. Deseo hacer una búsqueda de temas de un usuario. Primero, tengo la url del perfil de un usuario: No tienes permisos para ver links. Registrate o Entra con tu cuenta, donde XXX es el id del usuario, y posteriormente buscar en varios directorios y subdirectorios (de la misma web, obvio) si el username es el creador de la entrada.

Dentro de mi cabeza es algo así:

- Introducir el id del usuario.
- Buscar los por los directorios ya listados.
- Dentro de cada directorio, buscar en subdirectorios.
- Mostrar la cantidad de entradas publicadas por el usuario (quizá alguna búsqueda específica dentro del código de fuente, no sé).

Necesito documentación para hacer eso... Gracias de antemano!!
« Última modificación: Septiembre 09, 2014, 08:47:32 pm por Expermicid »

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #1 en: Marzo 02, 2013, 02:25:25 am »
Hola,

Si lo que quieres es documentación, hechale un vistazo a las librerias No tienes permisos para ver links. Registrate o Entra con tu cuenta, No tienes permisos para ver links. Registrate o Entra con tu cuenta. Estas para las urls y No tienes permisos para ver links. Registrate o Entra con tu cuenta o No tienes permisos para ver links. Registrate o Entra con tu cuenta. Estos para trabajar con el código que te devuelve la web.

Si tienes alguna duda más específica no dudes preguntar de nuevo.

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Marzo 02, 2013, 02:32:06 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola,

Si lo que quieres es documentación, hechale un vistazo a las librerias No tienes permisos para ver links. Registrate o Entra con tu cuenta, No tienes permisos para ver links. Registrate o Entra con tu cuenta. Estas para las urls y No tienes permisos para ver links. Registrate o Entra con tu cuenta o No tienes permisos para ver links. Registrate o Entra con tu cuenta. Estos para trabajar con el código que te devuelve la web.

Si tienes alguna duda más específica no dudes preguntar de nuevo.

Saludos!

Había leído sobre urllib2 y creo que no sirve para lo que busco :P. Leeré los demás, gracias. Cualquier cosa pregunto aquí!

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #3 en: Marzo 02, 2013, 02:41:30 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Había leído sobre urllib2 y creo que no sirve para lo que busco :P. Leeré los demás, gracias. Cualquier cosa pregunto aquí!

Lo que quieres es abrir una url, así que  cualquiera de las dos librerias te sirve:

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import urllib
  5. URL = "http://underc0de.org/foro/profile/Hu0r/"
  6. print urllib.urlopen(URL).read()
  7.  

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Marzo 02, 2013, 03:25:31 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Había leído sobre urllib2 y creo que no sirve para lo que busco :P. Leeré los demás, gracias. Cualquier cosa pregunto aquí!

Lo que quieres es abrir una url, así que  cualquiera de las dos librerias te sirve:

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import urllib
  5. URL = "http://underc0de.org/foro/profile/Hu0r/"
  6. print urllib.urlopen(URL).read()
  7.  

Saludos!

Sí, pero quiero buscar dentro de ese código un tag determinado. Por ejemplo, tengo el tag:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
<a rel="nofollow" class="bigusername" href="http://sitio.com/miembro.php?u=XXXX"><font color="YYYYY"><strong>Hu0r</font></strong></a>
Entonces, la idea sería parsear y buscar dentro del code el tag <a>...</a> y que dentro de este busque el href=..../miembro.php?=XXXX (lo importante es el id). Y cuando lo encuentre lo almacene en un registro (+1). O podría cargarse toda la url: No tienes permisos para ver links. Registrate o Entra con tu cuenta para buscarla, más fácil que andar para allá y para acá con la id.
« Última modificación: Marzo 02, 2013, 03:40:33 am por Hu0r »

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #5 en: Marzo 02, 2013, 03:43:21 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Sí, pero quiero buscar dentro de ese código un tag determinado. Por ejemplo, tengo el tag:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
<a rel="nofollow" class="bigusername" href="http://sitio.com/miembro.php?u=XXXX"><font color="YYYYY"><strong>Hu0r</font></strong></a>
Entonces, la idea sería parsear y buscar dentro del code el tag <a>...</a> y que dentro de este busque el href=..../miembro.php?=XXXX (lo importante es el id). Y cuando lo encuentre lo almacene en un registro (+1).

Ahora entiendo mejor, y te acabas de responder, puedes usar como te dije en la primer respuesta HTMLParser o codear alguna expresión regular.

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Marzo 02, 2013, 06:43:07 pm »
Ya me leí toda la documentación e hice un par de cosas, pero me asaltan un par de dudas :P. Mira, el código (incompleto, recién lo primero) que tengo y que es verificar un id y el username:

Código: Python
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. print '''---------------------------------
  5. Verificando usuario...
  6. ---------------------------------'''
  7.  
  8. user = input("Introduce el ID de tu usuario: ")
  9.  
  10. # Unir input(ID) con la url que carga urllib2
  11. # ----------
  12. # -----------
  13.  
  14. import urllib2
  15. from BeautifulSoup import BeautifulSoup
  16.  
  17. url = 'http://sitio.com/member.php?u=XXXX'
  18. data = urllib2.urlopen(url).read()
  19. soup = BeautifulSoup(data)
  20.  
  21. for anchor in soup.findAll('h1'):
  22.     if anchor('strong'):
  23.       print "Bienvenido", anchor('strong')
  24.  

Usé la librería BeautifulSoup porque me pareció más fácil de entender, y vaya que es así! Ahora dos dudas, lo primero es que, quiero introducir un entero que corresponderá al id del usuario, pero cómo hago que la url sea variable? Es decir, que a la url No tienes permisos para ver links. Registrate o Entra con tu cuenta se le agregue el entero que se le introdujo a través de input (quedando No tienes permisos para ver links. Registrate o Entra con tu cuenta Y segundo, al introducir la id (en este caso, modificando la url) accedo al perfil del usuario y con BeautifulSoup parseo el html y encuentro el nombre de usuario, que está dentro de estos tags:

Código: Python
  1. <h1><font color="white"><strong>Zefidu</strong></font> ... </h1>

Pero lo que consigo con ese código es:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
Bienvenido [<strong>USERNAME</strong>]
Y claramente sólo quiero que diga "USERNAME".

Saludos y gracias!!

---------------------------

EDIT: Me respondo solo, sólo tenía que editar la línea de la URL como sigue:

Código: Python
  1. url = 'http://sitio.com/member.php?u=%d' % (user)

:P. Sigo sin saber aún lo del BeautifulSoup!
« Última modificación: Marzo 02, 2013, 07:04:59 pm por Hu0r »

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #7 en: Marzo 02, 2013, 08:45:20 pm »
Hola,

Nunca he tocado BeautifulSoup pero parece que está regresando una lista, sólo cambia esta línea

Código: Python
  1. print "Bienvenido", anchor('strong')[0]

No debería mostrar los [ ], pero sí la etiqueta <strong> para eliminarla, puedes hacerlo con una expresión regular (muy sencilla para este caso) o con un simple split

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #8 en: Marzo 02, 2013, 09:05:24 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Hola,

Nunca he tocado BeautifulSoup pero parece que está regresando una lista, sólo cambia esta línea

Código: Python
  1. print "Bienvenido", anchor('strong')[0]

No debería mostrar los [ ], pero sí la etiqueta <strong> para eliminarla, puedes hacerlo con una expresión regular (muy sencilla para este caso) o con un simple split

Saludos!

Gracias, pude eliminar los corchetes ([...]), pero no he podido eliminar los tags. A todo esto, me explicas por qué con
  • se eliminaron los corchetes? Y depende del número? :O

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #9 en: Marzo 02, 2013, 09:46:37 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Gracias, pude eliminar los corchetes ([...]), pero no he podido eliminar los tags. A todo esto, me explicas por qué con
  • se eliminaron los corchetes? Y depende del número? :O
anchor('strong') te regresa una lista y al poner el [ 0 ] le indicas que regrese el primer elemento de la lista, sí depende del número, el número lo que hace es que trae el elemento de la lista que corresponde a esa posición (tomando en cuenta que el primer elemento es cero. También puedes usar números negativos, -1 correpondería al último elemento de la lista). Ahora si no colocas el [ 0 ] imprimiras la lista completa (todos los elementos) incluidos los [ ]

Para eliminar la etiqueta <strong> te dejo una expresión regular:

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import re
  5.  
  6. Var = "<strong>USERNAME</strong>"
  7. Usuario = re.findall(r'<strong>(.*?)</strong>', Var)
  8. print Usuario[0]
  9.  

Saludos!
« Última modificación: Marzo 02, 2013, 09:48:34 pm por 11Sep »






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #10 en: Marzo 03, 2013, 01:46:44 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Gracias, pude eliminar los corchetes ([...]), pero no he podido eliminar los tags. A todo esto, me explicas por qué con
  • se eliminaron los corchetes? Y depende del número? :O
anchor('strong') te regresa una lista y al poner el [ 0 ] le indicas que regrese el primer elemento de la lista, sí depende del número, el número lo que hace es que trae el elemento de la lista que corresponde a esa posición (tomando en cuenta que el primer elemento es cero. También puedes usar números negativos, -1 correpondería al último elemento de la lista). Ahora si no colocas el [ 0 ] imprimiras la lista completa (todos los elementos) incluidos los [ ]

Para eliminar la etiqueta <strong> te dejo una expresión regular:

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import re
  5.  
  6. Var = "<strong>USERNAME</strong>"
  7. Usuario = re.findall(r'<strong>(.*?)</strong>', Var)
  8. print Usuario[0]
  9.  

Saludos!

Disculpa la ignorancia... Pero dónde iría eso? xD

Y sobre la librería urllib2, ¿cómo podría asignar que recorra más de una url? ¿Con un while?

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #11 en: Marzo 03, 2013, 02:29:12 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Disculpa la ignorancia... Pero dónde iría eso? xD

Y sobre la librería urllib2, ¿cómo podría asignar que recorra más de una url? ¿Con un while?

A la varibale Var le debes asignar el string que te regresa anchor('strong')[0] y en Usuario queda el usuario sin la etiqueta <strong>

Puedes hacerlo con un while o también puedes guardar las urls en una lista y recorrerla con un for

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #12 en: Marzo 03, 2013, 02:38:36 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Disculpa la ignorancia... Pero dónde iría eso? xD

Y sobre la librería urllib2, ¿cómo podría asignar que recorra más de una url? ¿Con un while?

A la varibale Var le debes asignar el string que te regresa anchor('strong')[0] y en Usuario queda el usuario sin la etiqueta <strong>

Puedes hacerlo con un while o también puedes guardar las urls en una lista y recorrerla con un for

Saludos!

Trataré de digerir lo que me dices y te cuento. Te agradezco un montón tu tiempo y dedicación!!!  :D

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #13 en: Marzo 03, 2013, 06:57:16 pm »
No fue necesario usar la librería re. Bastaba con agregar

Código: Python
  1.  .string.strip()

Para eliminar el tag molesto. Sobre el while, ¿me echas una mano? No he podido combinar las librerías con el while, lo único que me quedó por hacer es agregar muchas urls aparte y muchos for, lo que implica que el código no es para nada limpio, sino hecho muy brutamente xD!

Onda la idea es si tengo la web

Código: Python
  1. sitio.com/?id=1&page=1

Avanzar en páginas, &ṕage=2, &page=3... hasta que encuentre una página que no exista (donde se muestra un error, 404) y termine el loop. El problema es que no he encontrado documentación para hacer esto -.-. No me gusta preguntar mucho, pero bueno...

Saludos!

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #14 en: Marzo 03, 2013, 08:01:05 pm »
Hola de nuevo, para lo que necesitas, tienes que hacer uso de la libreria httplib

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import httplib
  5.  
  6. Url = "/?id=1&page=%d"
  7. Cont = 1
  8.  
  9. while True:
  10.     Buff = Url % Cont
  11.     Conn = httplib.HTTPConnection("www.sitio.com")
  12.     Conn.request("GET", Buff)
  13.     Resp = Conn.getresponse().status
  14.     if Resp == 404:
  15.         break
  16.     else:
  17.         print Cont, "Existe"
  18.     Cont += 1
  19.  

Por cierto, a veces las webs no regresan un 404 cuando no existe el archivo en el servidor, sino que regresan un 302 (por ejemplo el foro)

Y no te preocupes por preguntar que para eso estamos acá.

Saludos!






No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Hu0r

  • *
  • Underc0der
  • Mensajes: 37
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #15 en: Marzo 04, 2013, 02:46:05 am »
Investigando y preguntando por acá y por allá, encontré lo que quería. Lo dejaré por si alguien lo quiere:

Código: Python
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import urllib2
  5. from BeautifulSoup import BeautifulSoup
  6.  
  7. pagenumber = 0
  8. while(1):
  9.     pagenumber = pagenumber +1
  10.     url = 'somesite/cat?=188&paged=%d' % (pagenumber)
  11.     try:
  12.         page = urllib2.urlopen(url)  
  13.         data = page.read()
  14.         soup = BeautifulSoup(data)
  15.         xa = soup.findAll('a', href=True)
  16.  
  17.         for web in xa:
  18.             if web['href'].startswith('example'):
  19.                 print web['href']
  20.         page.close()
  21.     except IOError as e:
  22.         break  
  23.  
  24.  

Es decir, si tienes una web del tipo sitio.com/?id=1&page=1 y quieres recorrer y parsear todas esos urls, lo haces con ese código. El parseo difiere dependiendo de lo que quieras.

Gracias por todo, tengo un par de dudas más, pero son más básicas y prefiero abrir otro thread. Se agradece la disposición (nuevamente).

Saludos!!!  :D

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 6275
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2128
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1535
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 2673
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3341
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon