首页 > 解决方案 > 如何从本网站抓取中提取此文本?美丽汤

问题描述

我正在尝试提取此产品的字符串“No disponble”,但我得到“none”或属性文本不存在:

在此处输入图像描述

https://es.louisvuitton.com/esp-es/productos/neceser-26-monogram-canvas-000767#M47542

disponibilidad = soup.find("span", {"class":"lv-stock-indicator lv-product-stock-indicator lv- 
product__stock list-label-m -not-available"}).text

但我得到这个错误:

AttributeError: 'NoneType' object has no attribute 'text'

标签: python

解决方案


如评论中所述,内容是动态生成的,但您可以使用 selenium。

例子

from selenium import webdriver
from bs4 import BeautifulSoup
from time import sleep

driver = webdriver.Chrome(executable_path='C:\Program Files\ChromeDriver\chromedriver.exe')

url = 'https://es.louisvuitton.com/esp-es/productos/neceser-26-monogram-canvas-000767#M47542'
driver.get(url)
sleep(2)
soup = BeautifulSoup(driver.page_source, "lxml")

print(soup.select_one('div.lv-product__price-stock > span')).get_text()

driver.close()

输出

不负责任


获取无硒股票信息

如果您只是对产品是否可用感兴趣,您还可以使用产品requests的 api sku(提示和作业 - 您的 url 的最后一部分 :)

例子

import requests, json
from time import sleep
headers = {"user-agent": "Mozilla/5.0"}

skuList = ['M47542', 'M45587', '1A8EMO']
availabilities = {}

for id in idList:
    r=requests.get('https://api.louisvuitton.com/api/esp-es/catalog/availability/{0}'.format(id),headers=headers)
    availabilities[id] = (r.json()['skuAvailability'])
    print(r.json()['skuAvailability'])
    sleep(4)

输出可用性

{'000767': [{'skuId': 'M47542',
   'exists': True,
   'backOrder': False,
   'inStock': False}],
 'nvprod2540049v': [{'skuId': 'M45587',
   'exists': True,
   'backOrder': False,
   'inStock': False},
  {'skuId': 'M45586', 'exists': True, 'backOrder': False, 'inStock': False}],
 'nvprod2470212v': [{'skuId': '1A8EMO',
   'exists': True,
   'backOrder': False,
   'inStock': False},
  {'skuId': '1A8EMQ', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMS', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMU', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMW', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMY', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EN0', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EM9', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMB', 'exists': True, 'backOrder': False, 'inStock': True},
  {'skuId': '1A8EMD', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMF', 'exists': True, 'backOrder': False, 'inStock': True},
  {'skuId': '1A8EMH', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EMJ', 'exists': True, 'backOrder': False, 'inStock': False},
  {'skuId': '1A8EML', 'exists': True, 'backOrder': False, 'inStock': False}]}

推荐阅读