Abrir páginas web en python 3.5.X en la misma ventana – python python-3.x webbrowser

Pregunta:


Buenas, he hecho un script para lanzar varias páginas web en una sola ventana, es decir, cada url en una pestaña sin embargo, firefox sólo abre las pestañas si está iniciado,si no, lo abre en ventanas nuevas, mi código es el siguiente:

import os
import webbrowser
webbrowser.open_new("https://es5.forgeofempires.com/game/index?ref=")
webbrowser.open_new_tab("http://www.elalmeria.es/")
webbrowser.open_new_tab("http://www.ideal.es/almeria/")
webbrowser.open_new_tab("http://www.eldiario.es/")
webbrowser.open_new_tab("http://www.elconfidencial.com/")
webbrowser.open_new_tab("http://www.20minutos.es/")
webbrowser.open_new_tab("http://vozpopuli.com/inicio")
webbrowser.open_new_tab("http://www.elplural.com/")
webbrowser.open_new_tab("http://www.infolibre.es/")
webbrowser.open_new_tab("https://www.google.es/?client=firefox-b#q=rafa+es+genial&gfe_rd=cr")
#quiero estas pestañas se abran en un una sola ventana.

Preguntado por: ras212

FJSevilla

El problema ocurre porque si firefox no está iniciado al mandarle las urls webbrowser.open() no detecta proceso abierto y abre cada pagina en un nuevo proceso. El problema es que las ordenes se envian seguidas por lo que no da tiempo a que se inicie por primera vez firefox.

Puedes usar time.sleep() después de la primera llamada para dar tiempo a que se abra pero es un poco chapuzero.

Yo lo que haría es mirar a ver si hay un proceso de firefox abierto, si lo hay pues usar webbrowser.open_new_tab(), si no lo hay se inicia un nuevo proceso y se le mandan todas las urls.

Ten en cuenta que firefox admite que se le envien varias urls de una vez.

El siguiente código funciona con Python 3.5 y Windows 10:

import subprocess
import webbrowser



urls = [
    "https://es5.forgeofempires.com/game/index?ref=",
    "http://www.elalmeria.es/",
    "http://www.ideal.es/almeria/",
    "http://www.eldiario.es/",
    "http://www.elconfidencial.com/",
    "http://www.20minutos.es/",
    "http://vozpopuli.com/inicio",
    "http://www.elplural.com/",
    "http://www.infolibre.es/",
    "https://www.google.es/?client=firefox-b#q=rafa+es+genial&gfe_rd=cr",
]

firefox_path = 'C:/Program Files/Mozilla Firefox/firefox.exe'

def processExists(processname):
    prog=[line.split() for line in subprocess.check_output("tasklist").splitlines()]      
    return any([task[0] == bytes(processname, 'utf8') for task in prog[3:]])

if processExists('firefox.exe'):
    for url in urls:
        webbrowser.open_new_tab(url)
else:
    subprocess.run([firefox_path]+urls)

firefox_path debe ser la ruta de firefox.exe, en mi caso está instalado en la ruta que aparece aqui pero compruba donde está el tuyo. Recuerda cambiar los ” por ‘/’ al especificar la ruta.

Las webs están en una lista lo que facilita agregar o eliminar webs y el codigo en si.

Si usas alguna distro Linux tenemos que cambiar algunas cosas (funciona en Kubuntu 16.04 y Python 3.5):

#! /usr/bin/python
import subprocess
import webbrowser



urls = [
    "https://es5.forgeofempires.com/game/index?ref=",
    "http://www.elalmeria.es/",
    "http://www.ideal.es/almeria/",
    "http://www.eldiario.es/",
    "http://www.elconfidencial.com/",
    "http://www.20minutos.es/",
    "http://vozpopuli.com/inicio",
    "http://www.elplural.com/",
    "http://www.infolibre.es/",
    "https://www.google.es/?client=firefox-b#q=rafa+es+genial&gfe_rd=cr",
]

def processExists(processname):
    try:
        subprocess.check_output(["pidof", processname])
        return True
    except: return False

if processExists('firefox'):
    for url in urls:
        webbrowser.open_new_tab(url)
else:
    subprocess.run(['firefox']+urls, shell=False)

Fuente

Related Posts:

Python editor extension for laravel-admin
...
DreamFactory(tm) Scripting Components
...
Enhance PHP sprintf with Python-style named parameters
...
Python string slices in PHP
...
Non-standard PHP library (NSPL) – functional primitives toolbox and more
...
PHP client for Celery task queue
...
File Upload widget for jQuery.
...
Con Django ‘str’ object is not callable en class based-views – python django
Pregunta: Tengo este problema cuando quiero acceder a una URL que me dice que es str object is no callable seguramente tengo algo mal en ...
Publicar proyecto en Python 3.5 con heroku – python django python-3.x
Pregunta: Hola tengo un proyecto hecho con Python 3.5 y Django 1.10 y quisiera publicarlo en HEROKU pero veo que solo soporta Python 2.7, ¿alguien ...
Correcto uso de la app admin de django – python django
Pregunta: Cual es el correcto uso que se le debe dar a la página de administración (django.contrib.admin) en una aplicación en producción. explico mi pregunta. El ...
Cambiar un valor string a un entero – python django ajax
Pregunta: Con el siguiente código quiero hacer una validación donde valide si un dato que voy a ingresar es mayor a otro que ya tengo, ...
Como correr Django en python 3.5 – python python-3.x django
Pregunta: estoy trabajando con Django en python 2.7, para eso hago uso de virtualenv, pip, el conector de mysql, etc. Tengo predefinido python 3.5 en ...
Insertar salto de línea escribiendo en un txt (Python) – python tkinter
Pregunta: Como puedo insertar un salto de línea : archi.write(svnombreRP.get()) Lo hago de la siguientes maneras y no me funciona: No funciona archi.write(svnombreRP.get()'/n') No funciona archi.write(svnombreRP.get()/n) No funciona, me imprime la variable ...
Python elemento IN lista de strings – python python-3.x
Pregunta: tengo la siguiente lista y string: lis = palabra = 'ejemplo' Pero cuando hago palabra in lis Me retorna False. ¿A qué ...
Python: Cómo importar una función desde un archivo – python python-3.x
Pregunta: Estoy teniendo problemas para importar una función: def helloworld(): print("Hello World!") La tengo en un archivo llamado ...

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *