Как исключить ребенка в Python - PullRequest
0 голосов
/ 06 ноября 2018

Я написал скрипт на python, чтобы получить цены на товары на сайте, но я нашел проблему. Иногда некоторые товары продаются, из-за этого у них есть 2 цены (оригинальная и фактическая). Мои сценарии получают их все, но я не хочу цены до продажи. Как я могу их исключить? Возможно ли это?

Пример в исходном коде:

Обычная цена

 <div class="result-actions"
   <span> ==$0
     $ 1,98
   </span>

В продаже

 <div class="result-actions">
   <span>
     <small class="price-before"> ==$0
       $ 56,70
     </small>
     <span class="price-now">
       $ 39,60
     </span>
   </span>

Мой сценарий

import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup

site = input()
html = urlopen(site)
bs = BeautifulSoup(html, 'html.parser')
pricesList = bs.findAll('div',{'class':'result-actions'})
csvFile = open('Prices.csv', 'wt+')
writer = csv.writer(csvFile)


try:
  for prices in pricesList:
    print(clean_up_text(prices.get_text()))
    csvPrice = []
    csvPrice.append(clean_up_text(prices.get_text().strip()))
    writer.writerow(csvPrice)                  
finally:
  csvFile.close()

Пожалуйста, помогите мне!

Обновление

Я пытался включить функцию для исключения старых цен, но, похоже, она тоже не сработает.

def excluir_precos_antigos(element):
  element = driver.find_element_by_class_name('price-before')
    driver.execute_script("""var element = 
    arguments[0];element.parentNode.removeChild(element);""", element)

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете просто найти тег span, хранящий продажную цену:

d = """
<div class="result-actions">
 <span>
  <small class="price-before"> ==$0
   $ 56,70
  </small>
  <span class="price-now">
   $ 39,60
  </span>
</span>
</div>
"""

from bs4 import BeautifulSoup as soup
result = soup(d, 'html.parser').find('span', {'class':'price-now'}).text

Выход:

'\n   $ 39,60\n  '

Если на странице несколько result-actions div с, вы можете использовать find_all:

final_results = [i.find('span', {'class':'price-now'}).text for i in soup(d, 'html.parser').find_all('div', {'class':'result-actions'})]

Что дает все цены продажи на странице:

['\n   $ 39,60\n  ']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...