send
Grupo de Telegram
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
  • 1165 Vistas

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

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 383
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« en: Enero 02, 2013, 06:31:55 pm »
You are not allowed to view links. Register or Login
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!






You are not allowed to view links. Register or Login

Desconectado Kodeinfect

  • *
  • Underc0der
  • Mensajes: 327
  • 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
You are not allowed to view links. Register or Login


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



Desconectado 2Fac3R

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

You are not allowed to view links. Register or Login
Excelente, iré a darle un ojo  :o
Mira por donde te vengo a ver 11sex.

3Fac2R andas por acà??? xDD

Zalu2

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 383
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #4 en: Enero 04, 2013, 01:13:32 am »
You are not allowed to view links. Register or Login
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!







You are not allowed to view links. Register or Login

 

¿Te gustó el post? COMPARTILO!



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

Iniciado por JaAViEr

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

Iniciado por JaAViEr

Respuestas: 0
Vistas: 1175
Último mensaje Agosto 21, 2011, 09:18:28 pm
por JaAViEr
[Código-PyQT4] View Source - JaAViEr

Iniciado por JaAViEr

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

Iniciado por JaAViEr

Respuestas: 3
Vistas: 1302
Último mensaje Junio 30, 2011, 11:37:27 pm
por JaAViEr
[PyQt4] Admin Panel Finder

Iniciado por Once

Respuestas: 4
Vistas: 1370
Último mensaje Enero 10, 2013, 05:21:49 pm
por Once