简体   繁体   English

如何从本网站抓取中提取此文本? 美丽汤

[英]How to extract this text from this Website Scraping? BeatifulSoup

I'm trying to extract the string "No disponble" of this product, but im getting "none" or attribute text dont exists:我正在尝试提取此产品的字符串“No disponble”,但我得到“none”或属性文本不存在:

在此处输入图像描述

https://es.louisvuitton.com/esp-es/productos/neceser-26-monogram-canvas-000767#M47542 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

But im getting this error:但我得到这个错误:

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

As mentioned in the comments content is dynamically generated but you can go with selenium.如评论中所述,内容是动态生成的,但您可以使用 go 和 selenium。

Example例子

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()

Output Output

No disponible不负责任


Get in stock information without selenium获取库存信息,无需 selenium

If you just interessted if product is available you can also requests the api with the sku of the product (hint and homework - last part of your url:)如果您只是对产品是否可用感兴趣,您还可以requests带有产品sku的 api(提示和作业 - url 的最后一部分:)

Example例子

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)

Output availabilities Output 可用性

{'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}]}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM