Не удается удалить скрытые данные, отображаемые при наведении курсора

#javascript #python #web-scraping #beautifulsoup

Вопрос:

URL: https://www.nike.com/w/sale-3yaep

С веб — сайтом выше я пытаюсь очистить URL-адрес всех продуктов. BeautifulSoup будет извлекать только изображения продуктов по умолчанию. Если продукт имеет несколько цветов, следовательно, несколько URL-адресов продукта, я не смогу получить информацию об этом URL-адресе.

См., например, ниже: верхнее изображение является изображением по умолчанию для этого продукта. Наведя курсор на изображение, вы можете увидеть разные цвета. Если вы затем наведете курсор на другой цвет, URL-адрес изменится. Это та информация, которую мне нужно извлечь.

Изображение Продукта по Умолчанию

Наведение курсора мыши на другой цвет - URL меняется

Ответ №1:

На самом деле данные также генерируются из ответов json на вызовы api. Вот рабочий пример:

Код:

 import requests
import pandas as pd
import json

params = {
    "queryid": "products",
    "anonymousId": "1073AB4A1C5F8BFD37D3302DFF7210E5",
    "country": "us",
    "endpoint": "/product_feed/rollup_threads/v2?filter=marketplace(US)amp;filter=language(en)amp;filter=employeePrice(true)amp;filter=attributeIds(5b21a62a-0503-400c-8336-3ccfbff2a684)amp;anchor=24amp;consumerChannelId=d9a5bc42-4b9c-4976-858a-f159cf99c647amp;count=24",
    "language": "en",
    "localizedRangeStr": "{lowestPrice} — {highestPrice}"
     }

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'}

data=[]
url= 'https://api.nike.com/cic/browse/v1'
r = requests.get(url, params=params,headers = headers)

for item in r.json()['data']['products']['products']:
    data.append([
        item['title'],
        item['subtitle'],
        item['colorDescription'],
        item['images']['portraitURL'],
        item['colorways'][0]['images']['portraitURL'],
        item['colorways'][0]['images']['squarishURL']
        ])


cols=['Product_title','Product_subtitle','Product_color','Images-01','colorways-01','colorways-02']

df = pd.DataFrame(data, columns=cols)
print(df)
#df.to_csv('info.csv',index = False)
 

Выход:

                    Product_title  ...                                       colorways-02
0                        Kyrie Flytrap 4  ...  https://static.nike.com/a/images/t_default/33c...
1                                   Nike  ...  https://static.nike.com/a/images/t_default/a8c...
2            Nike Sportswear Club Fleece  ...  https://static.nike.com/a/images/t_default/e77...
3                        Nike Sportswear  ...  https://static.nike.com/a/images/t_default/bcc...
4                       Nike Dri-FIT One  ...  https://static.nike.com/a/images/t_default/02b...
5                     Nike React Miler 2  ...  https://static.nike.com/a/images/t_default/261...
6                   Nike Pegasus Trail 2  ...  https://static.nike.com/a/images/t_default/517...
7                    Nike TechKnit Ultra  ...  https://static.nike.com/a/images/t_default/d6f...
8                              Nike Fast  ...  https://static.nike.com/a/images/t_default/c10...
9                  Nike Air Max Infinity  ...  https://static.nike.com/a/images/t_default/d85...
10                  Nike Free X Metcon 2  ...  https://static.nike.com/a/images/t_default/wo6...
11      Nike Dri-FIT Indy Rainbow Ladder  ...  https://static.nike.com/a/images/t_default/085...
12               Nike One Rainbow Ladder  ...  https://static.nike.com/a/images/t_default/662...
13                     Nike Revolution 5  ...  https://static.nike.com/a/images/t_default/a9d...
14                     Nike Revolution 5  ...  https://static.nike.com/a/images/t_default/50b...
15                       Nike Sportswear  ...  https://static.nike.com/a/images/t_default/258...
16                   Nike Dri-FIT Trophy  ...  https://static.nike.com/a/images/t_default/w1o...
17                                Jordan  ...  https://static.nike.com/a/images/t_default/ca9...
18                    Nike Dri-FIT Tempo  ...  https://static.nike.com/a/images/t_default/26e...
19                     LeBron Soldier 14  ...  https://static.nike.com/a/images/t_default/3a1...
20                        KD Trey 5 VIII  ...  https://static.nike.com/a/images/t_default/i1-...
21  Nike Sportswear Windrunner Tech Pack  ...  https://static.nike.com/a/images/t_default/i1-...
22         USA Nike Therma Flex Showtime  ...  https://static.nike.com/a/images/t_default/7e1...
23                   Nike Blazer Low '77  ...  https://static.nike.com/a/images/t_default/b97... 

[24 rows x 6 columns]
 

Комментарии:

1. Спасибо. Я пытаюсь это проверить, и у меня есть вопрос-где в приведенном выше сценарии указано на страницу продаж? (т. Е. мой указанный выше URL nike.com/w/sale-3yaep ) …. Я хочу подтвердить, что это подтягивает правильные продукты

Ответ №2:

URL первого звонка

 import requests
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36"}
res=requests.get("https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-103",headers=headers)
 

Второе использование bs4 для поиска элементов

 from bs4 import BeautifulSoup
soup=BeautifulSoup(res.text,"html.parser")
 

Третье : вы можете найти вручную из супа только URL-адрес, и он даст вам
a тег с классом

В котором я использовал селектор css с ним, и после обхода его мы можем извлечь href

 main_data=soup.select("a.colorway-product-overlay")
for i in main_data:
    print(i['href'])
 

Выход:

 https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-104
https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-103
https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-006
https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-100
https://www.nike.com/in/t/kyrie-flytrap-3-ep-basketball-shoe-0qb5vw/CD0191-009
 

Комментарии:

1. спасибо, но мне это нужно для каждого продукта/цвета на главной странице, которую я предоставил.. не только для отдельного обувного изделия на картинке.