Чао,
Я работал над вашим кодом. Несколько вещей, прежде чем дать фрагмент:
1) вы искали "pb-sale-price "
вместо "pb-current-price "
2) как сказано в комментариях, я не мог работать с вашей HTML-страницей, поэтому я смоделировал ответ в соответствии с HTML-фрагментом, который вы нам дали3) Для полноты я смоделировал еще одну статью
Теперь код:
import requests
import bs4 as bs
from lxml import html
# simulating the html answer
string="""
<div class="pb pb-large-view pb-theme-default">
<div class="pb-current-price ">
<span class="">
$2,299.99
</span>
</div>
</div>
<div class="pb pb-large-view pb-theme-default">
<div class="pb-current-price ">
<span class="">
$799.99
</span>
</div>
</div>
"""
url = "https://www.bestbuy.com/site/lg-65-class-oled-b9-series-2160p-smart-4k-uhd-tv-with-hdr/6360611.p?skuId=6360611"
agent = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}
# cookies = {"cookie":"COPY_HERE_YOUR_COOKIE_FROM_BROWSER"}
#url_get = requests.get(url,headers=agent) #, cookies=cookies)
#tree = html.fromstring(url_get.content)
tree = html.fromstring(string)
#print(html.tostring(tree).decode("utf-8"))
prices = tree.xpath('//div[@class="pb-current-price "]/span/text()')
# output cleaning
prices = [x.strip(' ,\n') for x in prices]
print(prices)
Вывод
['$2,299.99', '$799.99']
Надеюсь, это поможет,Антонино
PS - Я настоятельно рекомендую вам также прочитать эту прекрасную статью