Как соскрести цену - PullRequest
       3

Как соскрести цену

0 голосов
/ 04 ноября 2019

Как очистить цену для одного конкретного элемента?

В html есть несколько делений с class="pb-current-price", однако меня интересует только цена $2,299.99. Как мне это сделать?

Спасибо.

                 <div class="pb pb-large-view pb-theme-default">
                  <div class="pb-current-price ">
                   <span class="">
                    $2,299.99
                   </span>
                  </div>
                 </div>

import requests
import bs4 as bs 
from lxml import html

url = ""
agent = {"User-Agent":""}
url_get = requests.get(url,headers=agent) #, cookies=cookies)


tree = html.fromstring(url_get.content)

prices = tree.xpath('//div[@class="pb-sale-price "]/span/text()')
print(prices)

Запуск приведенного выше кода вернет цену как [].

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Цена, которую вы показываете, является обычной ценой. Вы можете получить один из тегов скрипта следующим образом

import requests, json, re

headers = {'User-Agent':'Mozilla/5.0'}
r = requests.get('https://www.bestbuy.com/site/lg-65-class-oled-b9-series-2160p-smart-4k-uhd-tv-with-hdr/6360611.p?skuId=6360611&intl=nosplash', headers = headers)
p = re.compile(r'regularPrice\\":([\d.]+),')
price = p.findall(r.text)[0]
print(price)
0 голосов
/ 04 ноября 2019

Чао,

Я работал над вашим кодом. Несколько вещей, прежде чем дать фрагмент:

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 - Я настоятельно рекомендую вам также прочитать эту прекрасную статью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...