我试图从价格上刮取新蛋产品页面,但我似乎总是遇到同样的问题-结果始终是“无”。
以下几行非常基本的代码行适用于类似亚马逊的网站:
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的输出,但是我却没有。
当我尝试获得产品标题时,我得到了期望的结果。只是价格给了我这个问题。有谁遇到过同样的问题,如何解决?预先感谢。
答案 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