javascript - 如何从 JavaScript 呈现的响应页面下载最高分辨率的图像?
问题描述
假设这是网站页面:“ https://www.dior.com/en_us/products/couture-943C105A4655_C679-technical-fabric-cargo-pants-covered-in-tulle ”,我想从中下载所有图片展示的产品(本例中为 4 张图片)。
我正在使用 Selenium 并提取图像链接。问题是,如果我单击它们甚至 2000x3000 像素大的图像,但我只能获得 480 像素分辨率的图像。这些图像存储在哪里?我如何提取它们?(基本上我想下载这些图像的最大可能大小)
解决方案
使用您提供的页面的源代码,有 json 数据提供页面的链接和内容。一旦从源代码中的脚本中剥离数据,就很容易检索高分辨率链接并下载图像。如果您还没有,pip install requests
并且pip install bs4
.
import requests, re, json
from bs4 import BeautifulSoup
url = 'https://www.dior.com/en_us/products/couture-943C105A4655_C679-technical-fabric-cargo-pants-covered-in-tulle'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
script = [script.text for script in soup.find_all('script') if 'window.initialState' in script.text][0]
json_data_s = re.search(r'{.+}', script).group(0)
json_data = json.loads(json_data_s)
for holder in json_data['CONTENT']['cmsContent']['elements']:
if holder.get('type') == 'PRODUCTMEDIAS':
for image in holder['items']:
name = image['galleryImages']['imageZoom']['viewCode']
img_src = image['galleryImages']['imageZoom']['uri']
image_page = requests.get(img_src)
with open(name + '.jpg', 'wb') as img:
img.write(image_page.content)
*您之前下载的图像是缩略图。
推荐阅读
- json - 将 json 文件推送到 localStorage 数组中
- java - 如何在java项目中运行python文件?
- javascript - 如何在我的函数中更新 Fullcalendar?
- c++ - 将文本文件 C++ 从特定行解析到特定行
- spring-boot - Spring boot 2.0.0 到 2.2.1 关于 javax.servlet.* 库依赖有什么区别
- c# - 没有锁的生产者消费者模型或使用线程安全集合或锁?
- java - 以 M 大小的块进行组织 - MapReduce
- jquery - jquery验证返回错误值
- windows-10 - 我键盘上的特定键突出显示文本
- python - 如何计算字符串的实例并用另一个字符串+当前计数器替换它们?