【问题标题】:How can I scrape a product price from a website using Beautifulsoup?如何使用 Beautifulsoup 从网站上获取产品价格?
【发布时间】:2021-01-07 23:33:24
【问题描述】:

全部。我正在尝试从 StockX 提取这款运动鞋的最新出价,但由于某种原因,sneaker_price 出现空白,我收到错误“IndexError:list index out of range”。有人可以帮忙吗?:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://stockx.com/air-jordan-6-retro-travis-scott")

soup = BeautifulSoup(driver.page_source,"lxml")
driver.quit()

sneaker_price = soup.select("div.en-us stat-value stat-small")[0]

【问题讨论】:

  • 请分享HTML元素

标签: python web-scraping beautifulsoup screen-scraping


【解决方案1】:

试试 CSS 选择器div.en-us.stat-value.stat-small:

sneaker_price = soup.select("div.en-us.stat-value.stat-small")[0]
print(sneaker_price.text)

打印:

€523

注意:如果您获得验证码页面,请尝试指定更多 HTTP 标头和/或 Cookie。例如:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0',
    'Accept-Language': 'en-US,en;q=0.5'
}

cookies = {
    'stockx_homepage': "sneakers",
}

soup = BeautifulSoup(requests.get("https://stockx.com/air-jordan-6-retro-travis-scott", headers=headers, cookies=cookies).content,"lxml")

sneaker_price = soup.select("div.en-us.stat-value.stat-small")[0]
print(sneaker_price.text)

【讨论】:

  • 我会将 [0] 更改为 [1] 以确保捕获最新值。 sneaker_price = soup.select("div.en-us.stat-value.stat-small")[1]
【解决方案2】:

您可以使用.ask div.en-us.stat-value.stat-small 选择器获取包含最新要价的 div。由于有多个元素,您可以选择最后一个元素,例如:

ask_price = soup.select('.ask div.en-us.stat-value.stat-small')[-1]
print(ask_price.text) # $655

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多