Как использовать python-webkit2png для одновременного создания множества снимков экрана?

У меня есть тысячи URL-адресов со многих хостов, которые мне нужно сделать.

Я могу использовать библиотеку из командной строки, но как я могу интегрировать ее в свой код, чтобы я мог делать несколько снимков экрана одновременно?

Я думаю, что это как-то связано с xvfb, как и с ответом на этот вопрос: Как убить безголовый X-сервер, запущенный через Python? но я не уверен, что именно.


person oldfellow    schedule 30.04.2010    source источник


Ответы (3)


здесь я использовал аргумент для передачи местоположения .txt, который содержит список сайтов (с разделителями новой строки), и второй аргумент для местоположения выходного файла PNG.

https://gist.github.com/deadstar1/e8d30102afbaefec531d6708f761e104 спасибо @paljenczy

person ass-king some question    schedule 21.03.2018

Я использовал subprocess для вызова webkit2png (который был установлен через python-webkit2png), он работал нормально.

def scrape_url(url, outpath):
    """
    Requires webkit2png to be on the path
    """
    subprocess.call(["webkit2png", "-o", outpath, "-g", "1000", "1260",
                     "-t", "30", url])

def scrape_list_urls(list_url_out_name, outdir):
    """
    list_url_out_name is a list of tuples: (url, name)
    where name.png will be the image's name
    """
    count = 0
    for url, name in list_url_out_name:
        print count
        count += 1
        outpath = outdir + name + '.png'
        scrape_url(url, outpath)
person paljenczy    schedule 15.10.2013

Вероятно, что-то вроде этого (не проверено):

from webkit2png import WebkitRenderer, init_qtgui
from PyQt4.QtCore import QTimer

def renderer_func():   
    renderer = WebkitRenderer()
    renderer.width = 800
    renderer.height = 600
    renderer.timeout = 10
    renderer.wait = 1
    renderer.format = "png"
    renderer.grabWholeWindow = False

    outfile = open("stackoverflow.png", "w")
    renderer.render_to_file(url="http://stackoverflow.com", file=outfile)
    outfile.close()

app = init_qtgui()
QTimer.singleShot(0, renderer_func)
sys.exit(app.exec_())

Это было беззастенчиво взято из исходного кода webkit2png.py.

person Tamás    schedule 30.04.2010
comment
Спасибо, но у меня проблемы с использованием Xvfb. - person oldfellow; 30.04.2010