Как я могу получить изображение из защищенного элемента canvas, используя Python? - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь получить изображение с холста.

(Это чтобы получить статью от https://newslibrary.naver.com/viewer/index.nhn?articleId=1995042000209101001&officeId=00020,, но сначала нажмите кнопку 'X', чтобы увидеть статью.)

HTML-коды похожи на

<p class="main_layer_article_body" data-container="">
    <canvas width="421" height="594" style="touch-action: none; cursor: inherit;">
    </canvas>
</p>

Его xpath равен '//*[@id="_textContainer"]/p[2]/canvas'

Следуя предложениям из похожих вопросов,

  1. Я попытался сделать снимок экрана.Однако, поскольку изображение (статья) слишком длинное, я вынужден прокрутить вниз.Следовательно, метод скриншота не сработал.

  2. Я пытался сохранить изображение с холста напрямую.

    canvas = driver.find_element_by_xpath('//*[@id="_textContainer"]/p[2]/canvas')
    canvas_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", canvas)
    output_image = base64.b64decode(canvas_base64)
    with open("image.png", 'wb') as f:
        f.write(output_image)
    

Но этовозвращает только полностью белое изображение, размер которого составляет около 6 КБ.

Можно ли как-нибудь получить полное изображение этого полотна (статьи)?

...