使用 python inf Beautiful Soup 提取 <script> 的内容

Extract content of <script> with python inf Beautiful Soup

1/ 我使用此代码获取数据,然后我尝试提取属性“sku”的值:

import requests
from bs4 import BeautifulSoup

def request():
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
    req = requests.get('https://www.zalando.de/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html', headers=headers)
    fetch_info(req.text)

def fetch_info(html):
    soup = BeautifulSoup(html, "html.parser")
    paragraphs = str(soup.find_all('script', type="application/ld+json"))
    print(paragraphs)

request()

2/ 这是我得到的数据。我的目标是提取属性“sku”的值,但我不知道如何处理这些数据:

[{"@context":"http://schema.org","@type":"Product","aggregateRating":{"@type":"AggregateRating","bestRating":5,"ratingValue":"4.4","ratingCount":32,"worstRating":1,"reviewCount":20},"brand":{"@type":"Brand","name":"Nike Sportswear"},"color":"white/black/sail/team orange/weiß","image":["https://img01.ztat.net/article/spp-media-p1/5aab2cb0e8de49eba3a3a13b58e97639/f183297517d64ec9b36f25f93c92d336.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/dd5d970c70c34b5fb78d96dbba4682c8/56ffd527ef7b479bb4dccd0c4d950816.jpg?imwidth=103&filter=packshot","https://img01.ztat.net/article/spp-media-p1/0fdf0aede23e4440ad555e07b39ba659/60ad2f546cf94245abf63ad95170b4db.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/6ceb2462605e4272af66895a2267e619/4a6b815ae0e44d8b9cdc3d5cdd871d79.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/cea4e4de28144aca96579f6e5c390196/1fac999507a84688a2299c8ca0af11bd.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/ef435f76c0934820875e930679b1d176/ac3547823f4b458ba1243f1338265394.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/f93228b4eacb48f88c4b781d30495120/f75ce631aa3141aaaea0590d82fb4993.jpg?imwidth=103","https://img01.ztat.net/article/spp-media-p1/a753a62466c34f029c8b677e50025ef4/88b91b412cb74fe7a6b524ab022668a3.jpg?imwidth=103"],"itemCondition":"http://schema.org/NewCondition","manufacturer":"Nike Sportswear","name":"BLAZER MID '77 JUMBO UNISEX - Sneaker high - white/black/sail/team orange","offers":[{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110035000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110040000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110045000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110050000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110055000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110060000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110065000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110070000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110075000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110080000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110085000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110090000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/OutOfStock","price":"99.95","priceCurrency":"EUR","sku":"NI112N02S-A110095000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110100000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110105000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110110000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110115000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110120000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110125000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110130000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110140000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"},{"@type":"Offer","availability":"http://schema.org/InStock","price":"109.95","priceCurrency":"EUR","sku":"NI112N02S-A110150000","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html"}],"review":[{"@type":"Review","author":{"@type":"Person","name":"Joel"},"datePublished":"2022-01-19","description":"Sind nicht schön.","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"1"}},{"@type":"Review","author":{"@type":"Person","name":"Laura"},"datePublished":"2022-01-15","description":"Tolle Passform! Sehr gute Qualität!","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Fabienne"},"datePublished":"2022-01-13","description":"super geiler Sneaker. Dieses Modell ist viel bequemer als der normale Blazer wegen des weichen Abschlusses oben. Ist gemacht wie eine Socke.. Top...","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Fouad"},"datePublished":"2022-01-07","description":"Sehr chillig und sehr stylisch auf locker","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Zalando Kunde"},"datePublished":"2022-01-03","description":"Sieht top aus und ist sehr bequem.","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Dzafer"},"datePublished":"2021-12-26","description":"Leider Kleberreste am Schuh gehabt, sonst war alles top.","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"3"}},{"@type":"Review","author":{"@type":"Person","name":"anna"},"datePublished":"2021-12-22","description":"alles perfekt","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Sara"},"datePublished":"2021-12-18","description":"Super bequemer Sneaker, sieht dabei noch schick aus. Durch den elastischen Schaft viel einfacher reinzuschlüpfen, als bei dem normalen Modell!","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Zalando Kunde"},"datePublished":"2021-12-16","description":"Stylischer, bequemer schuh","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}},{"@type":"Review","author":{"@type":"Person","name":"Asli"},"datePublished":"2022-01-04","description":"Einfach nur Bomben Qualität sieht  getragen super aus  gr stimmt ich musste mir sonst immer eine nr größer nehmen bei Nike  bei diesem Model passte meine Schuhgröße. ","reviewRating":{"@type":"Rating","bestRating":5,"worstRating":1,"ratingValue":"5"}}],"sku":"NI112N02S-A11","url":"/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html","description":" Nike Sportswear BLAZER MID '77 JUMBO UNISEX - Sneaker high - white/black/sail/team orange für 109,95 € (2022-01-20) versandkostenfrei bei Zalando bestellen."}]

我已经读过这个 post 但它对我不起作用: Extract content of <script> with BeautifulSoup

有不同的地方需要指出:

  1. 而不是 find_all(),结果集 return 使用 find(),因为只有一个脚本标签匹配。

  2. 不要将标签及其内容转换为 str(),而是使用 .text 来提取内容。

  3. 主要问题是您必须替换提取文本中的所有 &quot;,因为它本身无效 json 如果您打印,它看起来像:

    '{&quot;@context&quot;:&quot;http://schema.org&quot;,&quot;@type&quot;:&quot;Product&quot;,&quot;aggregateRating&quot;...'

修复:

paragraphs = json.loads(soup.find('script', type='application/ld+json').text.replace("&quot;", "\""))

短代码:

url = 'https://www.zalando.de/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
req = requests.get(url, headers=headers)

soup = BeautifulSoup(req.text, "html.parser")
jsonData =  json.loads(soup.find('script', type='application/ld+json').text.replace("&quot;", "\""))

JSON:

{'@context': 'http://schema.org', '@type': 'Product', 'aggregateRating': {'@type': 'AggregateRating', 'bestRating': 5, 'ratingValue': '4.4', 'ratingCount': 32, 'worstRating': 1, 'reviewCount': 20}, 'brand': {'@type': 'Brand', 'name': 'Nike Sportswear'}, 'color': 'white/black/sail/team orange/weiß', 'image': ['https://img01.ztat.net/article/spp-media-p1/5aab2cb0e8de49eba3a3a13b58e97639/f183297517d64ec9b36f25f93c92d336.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/dd5d970c70c34b5fb78d96dbba4682c8/56ffd527ef7b479bb4dccd0c4d950816.jpg?imwidth=103&amp;filter=packshot', 'https://img01.ztat.net/article/spp-media-p1/0fdf0aede23e4440ad555e07b39ba659/60ad2f546cf94245abf63ad95170b4db.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/6ceb2462605e4272af66895a2267e619/4a6b815ae0e44d8b9cdc3d5cdd871d79.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/cea4e4de28144aca96579f6e5c390196/1fac999507a84688a2299c8ca0af11bd.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/ef435f76c0934820875e930679b1d176/ac3547823f4b458ba1243f1338265394.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/f93228b4eacb48f88c4b781d30495120/f75ce631aa3141aaaea0590d82fb4993.jpg?imwidth=103', 'https://img01.ztat.net/article/spp-media-p1/a753a62466c34f029c8b677e50025ef4/88b91b412cb74fe7a6b524ab022668a3.jpg?imwidth=103'], 'itemCondition': 'http://schema.org/NewCondition', 'manufacturer': 'Nike Sportswear', 'name': 'BLAZER MID &#x27;77 JUMBO UNISEX - Sneaker high - white/black/sail/team orange', 'offers': [{'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110035000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110040000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110045000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110050000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110055000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110060000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110065000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110070000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110075000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110080000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/OutOfStock', 'price': '99.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110085000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110090000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/OutOfStock', 'price': '99.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110095000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110100000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110105000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110110000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110115000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110120000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110125000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110130000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110140000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}, {'@type': 'Offer', 'availability': 'http://schema.org/InStock', 'price': '109.95', 'priceCurrency': 'EUR', 'sku': 'NI112N02S-A110150000', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html'}], 'review': [{'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Joel'}, 'datePublished': '2022-01-19', 'description': 'Sind nicht schön.', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '1'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Laura'}, 'datePublished': '2022-01-15', 'description': 'Tolle Passform! Sehr gute Qualität!', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Fabienne'}, 'datePublished': '2022-01-13', 'description': 'super geiler Sneaker. Dieses Modell ist viel bequemer als der normale Blazer wegen des weichen Abschlusses oben. Ist gemacht wie eine Socke.. Top...', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Fouad'}, 'datePublished': '2022-01-07', 'description': 'Sehr chillig und sehr stylisch auf locker', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Zalando Kunde'}, 'datePublished': '2022-01-03', 'description': 'Sieht top aus und ist sehr bequem.', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Dzafer'}, 'datePublished': '2021-12-26', 'description': 'Leider Kleberreste am Schuh gehabt, sonst war alles top.', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '3'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'anna'}, 'datePublished': '2021-12-22', 'description': 'alles perfekt', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Sara'}, 'datePublished': '2021-12-18', 'description': 'Super bequemer Sneaker, sieht dabei noch schick aus. Durch den elastischen Schaft viel einfacher reinzuschlüpfen, als bei dem normalen Modell!', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Zalando Kunde'}, 'datePublished': '2021-12-16', 'description': 'Stylischer, bequemer schuh', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}, {'@type': 'Review', 'author': {'@type': 'Person', 'name': 'Asli'}, 'datePublished': '2022-01-04', 'description': 'Einfach nur Bomben Qualität sieht  getragen super aus  gr stimmt ich musste mir sonst immer eine nr größer nehmen bei Nike  bei diesem Model passte meine Schuhgröße. ', 'reviewRating': {'@type': 'Rating', 'bestRating': 5, 'worstRating': 1, 'ratingValue': '5'}}], 'sku': 'NI112N02S-A11', 'url': '/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html', 'description': ' Nike Sportswear BLAZER MID &#x27;77 JUMBO UNISEX - Sneaker high - white/black/sail/team orange für 109,95\xa0€ (2022-01-20) versandkostenfrei bei Zalando bestellen.'}

例子

注意: 稍微改变了 defs 的行为,因为 fetch_info 应该引用请求,...

import requests, json
from bs4 import BeautifulSoup

def request(url):
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
    req = requests.get(url, headers=headers)
    return req

def fetch_info(url):
    soup = BeautifulSoup(request(url).text, "html.parser")
    paragraphs = json.loads(soup.find('script', type='application/ld+json').text.replace("&quot;", "\""))
    return paragraphs

for item in fetch_info('https://www.zalando.de/nike-sportswear-blazer-mid-77-jumbo-unisex-sneaker-high-whiteblacksailteam-orange-ni112n02s-a11.html')['offers']:
    print(item['sku'])

输出

NI112N02S-A110035000
NI112N02S-A110040000
NI112N02S-A110045000
NI112N02S-A110050000
NI112N02S-A110055000
NI112N02S-A110060000
NI112N02S-A110065000
NI112N02S-A110070000
NI112N02S-A110075000
NI112N02S-A110080000
NI112N02S-A110085000
NI112N02S-A110090000
NI112N02S-A110095000
...