我想自动从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
有什么建议吗?
答案 0 :(得分:0)
我设法实现了一个可行的解决方案,尽管远非理想的解决方案。
为此,我使用了Selenium
,chromedriver
和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页。 欢迎进行任何改进。