如何保存互联网上的图片流?

时间:2018-08-14 13:13:18

标签: selenium web-scraping google-chrome-devtools selenium-chromedriver

我想自动从Web源下载图片,该Web源使用编码为Base 64字符串的流。 我的Google Chrome浏览器正确地将源中的数据识别为JPG图片并显示出来。

现在,仅注册用户可以访问此页面。在这种情况下,我应该使用Selenium吗?

因此,基本上,我想生成大约1000个url请求,并将所有流式图片保存在本地磁盘上。

我请求的网址的示例:

https://ia800703.us.archive.org/BookReader/BookReaderImages.php?zip=/10/items/nortonreaderan6theast/nortonreaderan6theast_jp2.zip&file=nortonreaderan6theast_jp2/nortonreaderan6theast_1257.jp2&scale=1&rotate=0

响应是一个带有图片的html文档:

<html>
<head>
<meta name="viewport" content="width=device-width, minimum-scale=0.1">
<title>BookReaderImages.php (2447×4005) </title>
</head>
<body style="margin: 0px; background: #0e0e0e;">
<img style="-webkit-user-select: none;cursor: zoom-in;" src="https://ia800703.us.archive.org/BookReader/BookReaderImages.php?zip=/10/items/nortonreaderan6theast/nortonreaderan6theast_jp2.zip&file=nortonreaderan6theast_jp2/nortonreaderan6theast_1257.jp2&scale=1&rotate=0" width="556" height="911">
</body>
</html>

图片流是Base 64字符串。 浏览器允许将其另存为nortonreaderan6theast_1257.jpg

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我设法实现了一个可行的解决方案,尽管远非理想的解决方案。 为此,我使用了Seleniumchromedriver和Chrome扩展名Click and Save。 首先,启动浏览器实例后,我必须手动安装扩展程序。之后,我登录一个网站,然后打开一本我要下载的书。每次创建新实例时,我都必须经过这些步骤。

在我使用的所有页面(网址)中运行的循环中:

    driver.get(url) # Selenium method
    ''' Click and Save extension automatically detects the picture and saves it to Downloads directory (or other) in Windows OS'''
    while not os.path.exists(file_path): # wait till the file has been created
            time.sleep(0.5)

总体而言,此过程非常缓慢,在一小时内大约有1000页。 欢迎进行任何改进。