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.

[PyQt4] CSS Extractor

  • 4 Respuestas
  • 1366 Vistas

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« en: Enero 02, 2013, 06:31:55 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Un pequeño script que saca las hojas de estilo externas (incluidas en la etiquetas link de HTML) El código no hace mucho pero necesitaba tener claro el threading en pyqt4 antes de codear algo más "grande" y esto fue lo que salió
Código: Python
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. # Once
  4.  
  5. from PyQt4 import QtCore, QtGui
  6. import urllib
  7. import time
  8. import sys
  9. import re
  10.  
  11. URL = ""
  12.  
  13. class GUI(QtGui.QWidget):
  14.     def __init__(self):
  15.         QtGui.QWidget.__init__(self)
  16.         self.setWindowTitle("CSS Extractor -Once-")
  17.         self.resize(500, 500)
  18.  
  19.         self.Caja = QtGui.QVBoxLayout()
  20.         self.Caja1 = QtGui.QHBoxLayout()
  21.         self.Caja2 = QtGui.QHBoxLayout()
  22.         self.Caja3 = QtGui.QHBoxLayout()
  23.         self.Barra = QtGui.QHBoxLayout()
  24.  
  25.         self.Tab = QtGui.QTabWidget()
  26.  
  27.         self.BtnEnviar = QtGui.QPushButton("Buscar estilos")
  28.         self.connect(self.BtnEnviar, QtCore.SIGNAL("clicked()"), self.Comprobar)
  29.  
  30.         self.TxtDireccion = QtGui.QLineEdit()
  31.         self.TxtCSS = QtGui.QListWidget()
  32.         self.LblBarra = QtGui.QLabel("")
  33.  
  34.         self.BtnCancelar = QtGui.QPushButton("Cancelar")
  35.         self.connect(self.BtnCancelar, QtCore.SIGNAL("clicked()"), self.Cancelar)
  36.         self.BtnLimpiar = QtGui.QPushButton("Limpiar")
  37.         self.connect(self.BtnLimpiar, QtCore.SIGNAL("clicked()"), self.Clear)
  38.  
  39.         self.Caja1.addWidget(QtGui.QLabel("URL:"))
  40.         self.Caja1.addWidget(self.TxtDireccion)
  41.         self.Caja1.addWidget(self.BtnEnviar)
  42.  
  43.         self.Caja2.addWidget(self.Tab)
  44.  
  45.         self.Tab.addTab(self.TxtCSS, "General")
  46.  
  47.         self.Caja3.addWidget(self.BtnCancelar)
  48.         self.Caja3.addWidget(self.BtnLimpiar)
  49.  
  50.         self.Barra.addWidget(self.LblBarra)
  51.  
  52.         self.Caja.addLayout(self.Caja1)
  53.         self.Caja.addLayout(self.Caja2)
  54.         self.Caja.addLayout(self.Caja3)
  55.         self.Caja.addLayout(self.Barra)
  56.  
  57.         self.setLayout(self.Caja)
  58.  
  59.     def Comprobar(self):
  60.         global URL
  61.         self.Clear()
  62.         URL = str(self.TxtDireccion.text())
  63.         self.Hilo = Thread()
  64.         self.connect(self.Hilo, QtCore.SIGNAL("actualizar"), self.Prueba)
  65.         self.connect(self.Hilo, QtCore.SIGNAL("barra"), lambda X: self.LblBarra.setText(X))
  66.         self.connect(self.Hilo, QtCore.SIGNAL("tab"), self.AddTab)
  67.         self.Hilo.start()
  68.  
  69.     def Guardar(self):
  70.         print "Guardar"
  71.  
  72.     def Cancelar(self):
  73.         self.Hilo.terminate()
  74.         self.LblBarra.setText("Cancelado por el usuario")
  75.  
  76.     def Prueba(self, Data):
  77.         self.TxtCSS.addItem(Data)
  78.  
  79.     def AddTab(self, Data):
  80.         Data = Data.split("[-*-]")
  81.         self.Tab.addTab(QtGui.QTextEdit(Data[0]), Data[1])
  82.  
  83.     def Clear(self):
  84.         self.Tab.clear()
  85.         self.TxtCSS.clear()
  86.         self.Tab.addTab(self.TxtCSS, "General")
  87.         self.LblBarra.setText("")
  88.  
  89. class Thread(QtCore.QThread):
  90.     def __init__(self):
  91.         QtCore.QThread.__init__(self)
  92.  
  93.     def run(self):
  94.         self.Mostrar(self.Llamar(), 2)
  95.  
  96.     def __del__(self):
  97.         self.wait()
  98.  
  99.     def Traer(self, Url, Link):
  100.         try:
  101.             Buffer = urllib.urlopen(Url + Link).read() + "[-*-]" + Link
  102.             self.Mostrar(Buffer, 3)
  103.         except:
  104.             self.Mostrar("Error abriendo la hoja de estilo")
  105.  
  106.     def Urls(self, Link):
  107.         Buffer = ""
  108.         if Link[:7] == "http://":
  109.             Link = Link
  110.         elif Link[0] == "/":
  111.             Buffer = re.findall("(http://.*?\..*?)/", URL)[0] + "/"
  112.         else:
  113.             Buffer = re.findall("(http://.*/)", URL)[0]
  114.         self.Traer(Buffer, Link)
  115.         return(Link)
  116.  
  117.     def Links(self, Data):
  118.         Buffer = ""
  119.         Cantidad = 0
  120.         Data = Data.replace("><", ">\r\n<")
  121.         Expresion = re.compile('<link(.*).*?>')
  122.         Resultado = Expresion.findall(Data)
  123.         for i in Resultado:
  124.             if "stylesheet" in i:
  125.                 Css = re.findall(" href *= *[\"\'](.*?)[\"|\'] *", i)
  126.                 self.Mostrar("Estilo encontrado en:" + Css[0])
  127.                 Cantidad += 1
  128.                 self.Mostrar(self.Urls(Css[0]), 2)
  129.         self.Mostrar("%d Estilos encontrados" % Cantidad)
  130.         return(Buffer)
  131.  
  132.     def Llamar(self):
  133.         self.Mostrar("Abriendo web: " + URL)
  134.         try:
  135.             self.Links(urllib.urlopen(URL).read())
  136.         except:
  137.             self.Mostrar("No se pudo abrir la Web")
  138.  
  139.     def Mostrar(self, Mensaje, Opt=1):
  140.         time.sleep(0.3)
  141.         if Opt == 1:
  142.             self.emit(QtCore.SIGNAL("barra"), Mensaje)
  143.         elif Opt == 2:
  144.             self.emit(QtCore.SIGNAL("actualizar"), Mensaje)
  145.         else:
  146.             self.emit(QtCore.SIGNAL("tab"), Mensaje)
  147.  
  148. if __name__ == '__main__':
  149.     App = QtGui.QApplication(sys.argv)
  150.     Ini = GUI()
  151.     Ini.show()
  152.     App.exec_()
  153.  
  154.  

Saludos!






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

Desconectado Kodeinfect

  • *
  • Underc0der
  • Mensajes: 325
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Kodeinfect's Blog
« Respuesta #1 en: Enero 02, 2013, 06:48:32 pm »
Excelente, iré a darle un ojo  :o
Mira por donde te vengo a ver 11sex.

Desconectado Snifer

  • *
  • Underc0der
  • Mensajes: 1439
  • Actividad:
    0%
  • Reputación 1
  • Snifer@L4b's
    • Ver Perfil
    • Snifer@L4bs
  • Twitter: sniferl4bs
« Respuesta #2 en: Enero 02, 2013, 07:32:11 pm »
Las locas andan de regreso por lo visto :$ .. 

Excelente 21 sep :D
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



Desconectado 2Fac3R

  • *
  • Underc0der
  • Mensajes: 237
  • Actividad:
    0%
  • Reputación 0
  • Why be a king, when you can be a god
    • Ver Perfil
    • Escuela de Hackers & Programación
  • Skype: rockeg_18
  • Twitter: @2Fac3R
« Respuesta #3 en: Enero 03, 2013, 08:59:28 pm »
Que buen aporte brot, me sirve bastante para checkear el còdigo.

No tienes permisos para ver links. Registrate o Entra con tu cuenta
Excelente, iré a darle un ojo  :o
Mira por donde te vengo a ver 11sex.

3Fac2R andas por acà??? xDD

Zalu2
Escuela de Hackers & Programación.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #4 en: Enero 04, 2013, 01:13:32 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Excelente, iré a darle un ojo  :o
Mira por donde te vengo a ver 11sex.

Citar
Las locas andan de regreso por lo visto :$ .. 

Excelente 21 sep

Así es cariño, el destino se empeña en tenernos juntos ;)

Citar
Que buen aporte brot, me sirve bastante para checkear el còdigo.

Espero te sea útil

Saludos!







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

 

¿Te gustó el post? COMPARTILO!



[PyQT4] Memoriza :: "Entrenando tu memoria" :: JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 919
Último mensaje Mayo 15, 2015, 12:52:46 pm
por JaAViEr
[Código-PyQT4] View Source - JaAViEr

Iniciado por JaAViEr

Respuestas: 1
Vistas: 1266
Último mensaje Julio 02, 2011, 03:07:23 am
por JaAViEr
[Código-PyQT4] Html Helper - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1431
Último mensaje Agosto 21, 2011, 09:18:28 pm
por JaAViEr
[PyQt4] Admin Panel Finder

Iniciado por Once

Respuestas: 4
Vistas: 1658
Último mensaje Enero 10, 2013, 05:21:49 pm
por Once
Python QT: Primeros pasos en PyQT4 [PDF]

Iniciado por LucaSthefano

Respuestas: 3
Vistas: 1837
Último mensaje Noviembre 28, 2012, 10:06:21 pm
por Acidkode