Невозможно вернуть URL-адреса изображений и получить только data:image/gif;base64 при очистке веб-сайта

У меня есть простой скрипт Python, который собирает имя и изображение каждого поста из мужского раздела H&M. Имена возвращаются без проблем, но URL-адреса изображений, похоже, возвращают только первые несколько, прежде чем прибегнуть к формату: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAAAEAAAIBRAA7" Я пробовал запросы и селен с chromedriver в отдельности. Что мне не хватает?

Первая попытка (запросы):

import requests
from bs4 import BeautifulSoup

# URL of the H&M men's section
url = "https://www2.hm.com/en_us/men/products/view-all.html?page=1"

# Headers to mimic a browser visit
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Referer": "https://www.google.com/",
    "Connection": "keep-alive"
}

# Send a GET request to the webpage
response = requests.get(url, headers=headers)

# Check if the request was successful
if response.status_code == 200:
    # Parse the HTML content
    soup = BeautifulSoup(response.content, 'html.parser')

    # Find all the product items
    items = soup.find_all('article', class_='f0cf84')

    # Iterate over the items and extract the name and image URL
    for item in items:
        # Extract the product name
        name = item.find('a', class_='db7c79')['title']
        
        # Extract the image URL (the 'src' attribute of the <img> tag)
        img_tag = item.find('img', imagetype='PRODUCT_IMAGE')
        img_url = img_tag['src'] if img_tag else 'No image'

        # Print the name and image URL
        print(f"Product Name: {name}")
        print(f"Image URL: {img_url}\n")
else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}")

Вторая попытка (селен)

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()

# URL of the H&M men's section
url = "https://www2.hm.com/en_us/men/products/view-all.html?page=1"

# Open the webpage
driver.get(url)

# Get the page source and parse it with BeautifulSoup
soup = BeautifulSoup(driver.page_source, 'html.parser')

# Find all the product items
items = soup.find_all('article', class_='f0cf84')

# Iterate over the items and extract the name and image URL
for item in items:
    # Extract the product name
    name = item.find('a', class_='db7c79')['title']

    # Extract the image URL (the 'src' attribute of the <img> tag)
    img_tag = item.find('img', imagetype='PRODUCT_IMAGE')
    img_url = img_tag['src'] if img_tag else 'No image'

    # Print the name and image URL
    print(f"Product Name: {name}")
    print(f"Image URL: {img_url}\n")

# Quit the WebDriver
driver.quit()

Оба раза ответ один и тот же:

Product Name: Baggy Jeans
Image URL: https://image.hm.com/assets/hm/9e/53/9e53035efef96606bc4b50eaf6a0eee4f08a152c.jpg?imwidth=1536

Product Name: Regular Fit Cotton Shorts
Image URL: https://image.hm.com/assets/hm/8f/d8/8fd8d52f2e2c778041410f9a2727b448053ca8b7.jpg?imwidth=1536

Product Name: Regular Fit Linen-blend Shorts
Image URL: https://image.hm.com/assets/hm/d7/54/d7546a095c04387d1ad98575588c84e0426fb4be.jpg?imwidth=1536

Product Name: Muscle Fit Cotton Shirt
Image URL: https://image.hm.com/assets/hm/c7/d4/c7d49cef60f9d196d2f5347815f416bba7d4b636.jpg?imwidth=1536

Product Name: Slim Fit Ribbed Tank Top
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Jacket
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: 5-pack Slim Fit T-shirts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Linen-blend Resort Shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Suit Pants
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Cotton Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Suit Pants
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Polo Shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Baggy Jeans
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Half-zip Polo Shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Linen Jacket
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Loose Fit Cargo Jeans
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Nylon Cargo Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Loose Fit T-shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Loose Jeans
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Swim Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Chino Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Muscle Fit Polo Shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Linen-blend Pants
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: 5-pack Short Cotton Boxer Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Cropped Cotton Chinos
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Linen-blend Shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit Linen Suit Pants
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Linen-blend Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Swim Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Patterned Swim Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Patterned Swim Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit T-shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit T-shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Sweatshorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Regular Fit Cotton Shorts
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

Product Name: Slim Fit T-shirt
Image URL: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

это изображения в кодировке Base64 размером 1 пиксель на 1 пиксель. (вероятно, заполнители для ленивых загружаемых изображений). Они могут быть показаны позже. (Возможно, вызвано прокруткой...) Вы можете попробовать использовать сон, прежде чем помещать туда «элементы».... но возможно, они заполняются, как только становятся видимыми в окне просмотра.

browsermator 11.06.2024 20:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это встроенные данные изображения в формате base64, URL-адреса какого-либо внешнего ресурса нет. вы можете просто конвертировать base64 и сохранить их в исходном формате.

Ответ принят как подходящий

вы можете получить информацию из статического JSON в конце страницы с помощью запросов

if response.status_code == 200:
    # Parse the HTML content
    soup = BeautifulSoup(response.content, 'html.parser')

    # Find all the product items
    items = json.loads(soup.find('script', {'id': '__NEXT_DATA__'}).get_text())
    for item in items['props']['pageProps']['plpProps']['productListingProps']['hits']:
        print(f"Product Name: {item['title']}")
        print(f"Image URL: {'https://image.hm.com/' + item['imageProductSrc']}\n")

ВЫХОД:

Product Name: Baggy Jeans
Image URL: https://image.hm.com/assets/hm/3d/dd/3ddd1d7ee3dece637a88557a759b3502868b6ccd.jpg

Product Name: Regular Fit Cotton Shorts
Image URL: https://image.hm.com/assets/hm/00/79/00792d85a6f093d63513805bb50755be65e625b6.jpg

Product Name: Regular Fit Linen-blend Shorts
Image URL: https://image.hm.com/assets/hm/84/57/8457f6ee69e78e52a6a066f59dab6d416f4755d6.jpg

Product Name: Muscle Fit Cotton Shirt
Image URL: https://image.hm.com/assets/hm/c7/d4/c7d49cef60f9d196d2f5347815f416bba7d4b636.jpg

Product Name: Slim Fit Ribbed Tank Top
Image URL: https://image.hm.com/assets/hm/c1/2a/c12a71d4223049325463e8858352d9c88e5d1590.jpg

Product Name: Slim Fit Jacket
Image URL: https://image.hm.com/assets/hm/19/63/1963f78945f45ae8ea8c7f784c48197d7579675e.jpg

Product Name: 5-pack Slim Fit T-shirts
Image URL: https://image.hm.com/assets/hm/ef/84/ef847140f2084137e9142930801734502ab52ace.jpg

Product Name: Regular Fit Linen-blend Resort Shirt
Image URL: https://image.hm.com/assets/hm/64/5d/645da6d33d00dff6c973409498e0165435c0f35e.jpg

Product Name: Slim Fit Suit Pants
Image URL: https://image.hm.com/assets/hm/9a/11/9a113712bb917e853c24d444d7bf6dda63e84f0b.jpg

Product Name: Regular Fit Cotton Shorts
Image URL: https://image.hm.com/assets/hm/dd/a6/dda65d63ce74413808875fda0348e03878832232.jpg

Product Name: Slim Fit Suit Pants
Image URL: https://image.hm.com/assets/hm/c7/ff/c7ff2ba7d6eca8119908fcd7daf9066d3a8412dd.jpg

Product Name: Slim Fit Polo Shirt
Image URL: https://image.hm.com/assets/hm/fc/d7/fcd760bafdfb48ea8cccde14c5e3ad338dd96bfd.jpg

Product Name: Baggy Jeans
Image URL: https://image.hm.com/assets/hm/bc/fd/bcfd3f19e72773a735a3261355f490f6e2554238.jpg

Product Name: Slim Fit Half-zip Polo Shirt
Image URL: https://image.hm.com/assets/hm/03/3d/033dd2b17620eac8ebdf949c76cdc2b046a6bbd6.jpg

Product Name: Slim Fit Linen Jacket
Image URL: https://image.hm.com/assets/hm/5e/96/5e96bc27780b7002c2d97993b4f94bbfde01d610.jpg

Product Name: Loose Fit Cargo Jeans
Image URL: https://image.hm.com/assets/hm/fc/38/fc382304cef5c2a33a9a5a1b3c8cfc2e2c056f8b.jpg

Product Name: Regular Fit Nylon Cargo Shorts
Image URL: https://image.hm.com/assets/hm/a3/7d/a37db012d5f826763fece602dab3c7d44d8911c0.jpg

Product Name: Loose Fit T-shirt
Image URL: https://image.hm.com/assets/hm/e3/56/e3568a1492d1a9149da0401120fd82357a020eb0.jpg

Product Name: Loose Jeans
Image URL: https://image.hm.com/assets/hm/2c/77/2c77a9ff7cf1bc0cd4f2c2c94c23cff06ea3d555.jpg

Product Name: Swim Shorts
Image URL: https://image.hm.com/assets/hm/53/e6/53e6dbccb7a06a0d875217791b48d5a4c3c1def7.jpg

Product Name: Regular Fit Chino Shorts
Image URL: https://image.hm.com/assets/hm/f6/77/f677a6aab0df3447d0d6f6ab3146b1a78a7b5048.jpg

Product Name: Muscle Fit Polo Shirt
Image URL: https://image.hm.com/assets/hm/20/6f/206fbe107fe2aa85222b7b231e874274bf2421c6.jpg

Product Name: Regular Fit Linen-blend Pants
Image URL: https://image.hm.com/assets/hm/bb/79/bb79892f3ca98c59acdc959168fa7501c686c057.jpg

Product Name: 5-pack Short Cotton Boxer Shorts
Image URL: https://image.hm.com/assets/hm/3a/c7/3ac702fb6c64fe556b5033b0656e87bc64a5f921.jpg

Product Name: Regular Fit Cropped Cotton Chinos
Image URL: https://image.hm.com/assets/hm/94/52/945293e8bca2e00d9498a1250f541e5a372506ad.jpg

Product Name: Regular Fit Linen-blend Shirt
Image URL: https://image.hm.com/assets/hm/d5/9a/d59a0a9ccd4cc6ddeff0ffec007ae718b82e70fe.jpg

Product Name: Slim Fit Linen Suit Pants
Image URL: https://image.hm.com/assets/hm/eb/28/eb28c996f3b65e20bdf182e2d082016e61aa469c.jpg

Product Name: Regular Fit Linen-blend Shorts
Image URL: https://image.hm.com/assets/hm/f8/a8/f8a885cf83338303825afbda849304ba099f2d92.jpg

Product Name: Swim Shorts
Image URL: https://image.hm.com/assets/hm/31/05/3105df2f9e33d9c2c9665a819c0b55eef54e466a.jpg

Product Name: Patterned Swim Shorts
Image URL: https://image.hm.com/assets/hm/cb/e6/cbe6dafb3fb3ab98dbf1e502bf1af24bec4f2b1d.jpg

Product Name: Patterned Swim Shorts
Image URL: https://image.hm.com/assets/hm/74/1a/741a2c7c93a9e266060411d83c0d26435248fa7b.jpg

Product Name: Regular Fit T-shirt
Image URL: https://image.hm.com/assets/hm/44/42/4442fbac4e3080ec20b2f14e353fea267249b0dd.jpg

Product Name: Regular Fit T-shirt
Image URL: https://image.hm.com/assets/hm/bd/e4/bde4ef42f917ccb678c4ff1d218520ce2f10ff6d.jpg

Product Name: Regular Fit Sweatshorts
Image URL: https://image.hm.com/assets/hm/34/54/3454e1358929cdf81bccf06ac6e38372d00807f2.jpg

Product Name: Regular Fit Cotton Shorts
Image URL: https://image.hm.com/assets/hm/a2/a1/a2a105ee22bf93da3b28deb11f9d408b2b0bff4b.jpg

Product Name: Slim Fit T-shirt
Image URL: https://image.hm.com/assets/hm/09/58/0958cc08f86b7127b5dd8e0d0091824a337b6588.jpg

Другие вопросы по теме