【发布时间】:2020-08-09 07:22:22
【问题描述】:
A 使用以下代码从“https://www.adidas.com/us/men-shoes”网络抓取鞋子信息:
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import requests
uri = "men-shoes"
hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}
html_page = requests.get("https://www.adidas.com/us/" + str(uri), headers=hdr, timeout=15)
soup = BeautifulSoup(html_page.content, 'html.parser')
results = soup.find_all('div', attrs={'class': 'gl-product-card color-variations__fixed-size glass-product-card___17N3p'})
这是我在网络抓取特定鞋子时获得的数据示例:
<div class="gl-product-card color-variations__fixed-size glass-product-card___17N3p">
<div class="gl-product-card__assets">
<a class="gl-product-card__assets-link" data-auto-id="glass-hockeycard-link" href="/us/superstar-shoes/FV2820.html">
<img
alt="Originals Black Superstar Shoes"
class="img_with_fallback___2aHBu gl-product-card__image"
data-auto-id="image"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/3c086bf61062470aa54cab8700b26add_9366/superstar-shoes.jpg"
title="Superstar Shoes"
/>
<img
alt="Originals Black Superstar Shoes"
class="img_with_fallback___2aHBu gl-product-card__image-hover"
data-auto-id="image"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/d04a49435d094fcfa8dfab960070f1a9_9366/superstar-shoes.jpg"
title="Superstar Shoes"
/>
</a>
<div class="gl-product-card__wishlist">
<div class="toggle_wishlist_button___1dG52" data-auto-id="wishlist-icon-container">
<svg class="gl-icon" data-auto-id="wishlist-icon"><use xlink:href="#wishlist-inactive"></use></svg>
</div>
</div>
</div>
<div class="gl-product-card__carousel">
<div class="product-carousel" data-auto-id="glass-mock-carousel">
<div class="wrapper___3wqg4">
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
<div class="item_wrapper___2toNm"></div>
</div>
</div>
</div>
<div class="gl-product-card__details">
<a class="gl-product-card__details-link" href="/us/superstar-shoes/FV2820.html">
<div class="gl-product-card__details-top">
<div class="gl-product-card__category" title="shoes">Originals</div>
<div class="gl-product-card__details-icons"></div>
</div>
<div class="gl-product-card__details-main">
<span class="gl-label gl-label--m gl-label--condensed gl-product-card__name" title="Superstar Shoes">Superstar Shoes</span>
<div class="gl-price gl-price--s gl-price__inline___-VD1g notranslate"></div>
</div>
<div class="gl-product-card__details-bottom"><div class="gl-product-card__color">18 colors</div></div>
</a>
</div>
</div>
这是我直接从网站复制鞋子时得到的数据:
<div class="gl-product-card color-variations__fixed-size glass-product-card___17N3p">
<div class="gl-product-card__assets">
<a data-auto-id="glass-hockeycard-link" href="/us/zx-2k-4d-shoes/FW2003.html" class="gl-product-card__assets-link" data-di-id="di-id-93927325-c0dba7aa">
<img
data-auto-id="image"
title="ZX 2K 4D Shoes"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/d704fc8256204415b713ab6600f76418_9366/zx-2k-4d-shoes.jpg"
alt="Originals White ZX 2K 4D Shoes"
class="img_with_fallback___2aHBu gl-product-card__image performance-item"
data-inject_ssr_performance_instrument=""
onload="SSR_PERFORMANCE_MEASUREMENT(this)"
/>
<img
data-auto-id="image"
title="ZX 2K 4D Shoes"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/e169facc2c554c21b9d1ab880150342a_9366/zx-2k-4d-shoes.jpg"
alt="Originals White ZX 2K 4D Shoes"
class="img_with_fallback___2aHBu gl-product-card__image-hover"
/>
</a>
<div class="gl-product-card__wishlist">
<div class="toggle_wishlist_button___1dG52" data-auto-id="wishlist-icon-container">
<svg class="gl-icon" data-auto-id="wishlist-icon" data-di-res-id="d45e29bb-1d8adc35" data-di-rand="1596955983257"><use xlink:href="#wishlist-inactive"></use></svg>
</div>
</div>
<div class="gl-badge gl-badge--small gl-badge--semi-urgent">New</div>
</div>
<div class="gl-product-card__details">
<a href="/us/zx-2k-4d-shoes/FW2003.html" class="gl-product-card__details-link" data-di-id="di-id-93927325-c0dba7aa">
<div class="gl-product-card__details-top">
<div class="gl-product-card__category" title="shoes">Originals</div>
<div class="gl-product-card__details-icons"></div>
</div>
<div class="gl-product-card__details-main">
<span class="gl-label gl-label--m gl-label--condensed gl-product-card__name" title="ZX 2K 4D Shoes">ZX 2K 4D Shoes</span>
<div class="gl-price gl-price--s gl-price__inline___-VD1g notranslate"><span class="gl-price__value">$200</span></div>
</div>
</a>
</div>
</div>
正如您从网站和复制的数据中看到的那样,它显示了价格,在本例中为 200 美元。如何获取我的代码以显示鞋子的价格?
请附上时间优化的代码,因为我要刮一百多只鞋子。
【问题讨论】:
标签: python python-3.x beautifulsoup python-requests