Как загрузить изображение с самым высоким разрешением со страницы с отображением JavaScript? - PullRequest
0 голосов
/ 14 октября 2019

Предположим, это страница веб-сайта: "https://www.dior.com/en_us/products/couture-943C105A4655_C679-technical-fabric-cargo-pants-covered-in-tulle",, с которой я хочу загрузить все представленные изображения продукта (в данном случае 4 изображения).

Я использую Selenium и извлекаюСсылки на изображения. Проблема в том, что если я нажимаю на изображения, они имеют размер даже 2000x3000 пикселей, но я могу получить только изображения с разрешением около 480 пикселей. Где хранятся эти изображения? Как их извлечь? (в основном я хочузагрузить максимально возможный размер этих изображений)

1 Ответ

0 голосов
/ 14 октября 2019

С исходным кодом предоставленной вами страницы есть данные 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)

* Изображения, которые вы загружали ранее, были миниатюрными фотографиями.

...