【问题标题】:Python & BeautifulSoup 4 - Unable to get Newegg prices?Python & BeautifulSoup 4 - 无法获得新蛋的价格?
【发布时间】:2019-07-26 06:00:59
【问题描述】:

我试图在 Newegg 产品页面上搜索价格,但我似乎总是遇到同样的问题 - 结果总是“无”。

这里有一些非常基本的代码行,适用于亚马逊等类似网站:

 data = requests.get('https://www.newegg.com/Product/Product.aspx?Item=N82E16824475015&cm_sp=Homepage_Dailydeal-_-P1_24-475-015-_-03042019')
 soup = BeautifulSoup(data.text, 'html.parser')
 price = soup.find('li', class_='price-current').text.strip()

我希望得到 $419.99 作为输出,但我得到的是 None。

当我尝试获取产品标题时,我得到了想要的结果。只有价格给了我这个问题。有没有人有同样的问题,如何解决?提前致谢。

【问题讨论】:

  • 您正在解析的网页似乎有一些动态生成的内容。试试selenium
  • 我尝试了 Selenium 和其他一些我无法开始工作的东西,这就是我不得不寻求帮助的原因。我更喜欢自己解决问题,但我只是被困在这个问题上。感谢快速回复和我得到的所有帮助。

标签: python web-scraping beautifulsoup


【解决方案1】:

您可以使用属性选择器来定位在其内容属性中包含该价格的元素。

import requests
from bs4 import BeautifulSoup

data = requests.get('https://www.newegg.com/Product/Product.aspx?Item=N82E16824475015&cm_sp=Homepage_Dailydeal-_-P1_24-475-015-_-03042019')
soup = BeautifulSoup(data.content, 'lxml')
price = soup.select_one('[itemprop=price]')['content']
print(price)

【讨论】:

  • FWIW,虽然仍然显示正确的价格,但它搜索的标签与 OP 正在寻找的标签不同。主要是由于 OP 正在抓取的网页是动态生成的。虽然仍然 +1
  • @Wondercricket。谢谢。对。这就是我这么做的原因。
  • 简单并完成工作;正是我完成这项任务所需要的。非常感谢。
【解决方案2】:

我喜欢使用如下所示的 lxml 库。有了它,您可以使用很棒的 XPATH。

import urllib2
from lxml import etree

url =  "URL HERE"
response = urllib2.urlopen(url)
htmlparser = etree.HTMLParser()
tree = etree.parse(response, htmlparser)
tree.xpath('//*[@id="newproductversion"]/span/strong')

我得到了预期的输出 419.99

【讨论】:

  • 这对我打算做的其他事情非常有用,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 2019-08-01
  • 2010-12-21
  • 2019-08-29
  • 1970-01-01
  • 2023-02-20
  • 2016-03-12
相关资源
最近更新 更多