python - 如何从本网站抓取中提取此文本?美丽汤
问题描述
我正在尝试提取此产品的字符串“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'
解决方案
如评论中所述,内容是动态生成的,但您可以使用 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}]}
推荐阅读
- python - 我在制作基于图块的游戏时出错。有人可以帮忙吗?
- c - 在 Visual Studio Code 中调试 C 代码时我的输出在哪里?
- php - 仅在某些行上替换 PHP 字符串
- spring-cloud-stream - 如何从配置中定义的 spring.rabbitmq.addresses 服务连接到 2 个不同的 rabbitmq 集群
- flutter - 在 Flutter 中预缓存 html 页面
- spring - 用于前端 + 守护程序应用程序的 Azure B2C
- php - PHP - 显示不同时区的数据
- datetime - 如何在 jmeter 中为单个 https 请求设置不同的时隙
- python - 系统显示已安装所有请求的软件包。但是我在导入 pytorch 时收到错误消息
- batch-file - 我用于安装程序的批处理文件崩溃了