Python&BeautifulSoup 4-无法获得Newegg价格?

时间:2019-03-04 21:00:06

标签: python web-scraping 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.text, 'html.parser')
 price = soup.find('li', class_='price-current').text.strip()

我期望获得$ 419.99的输出,但是我却没有。

当我尝试获得产品标题时,我得到了期望的结果。只是价格给了我这个问题。有谁遇到过同样的问题,如何解决?预先感谢。

2 个答案:

答案 0 :(得分:2)

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

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)

答案 1 :(得分:1)

我喜欢使用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