Как написать условие, чтобы при парсинге данных не выводилось время?
Есть задача - вытащить с сайта название банков, цену покупки и продажи валют. В таблице на странице банка есть еще время(которое мне не нужно). Не понимаю как записать условие, при котором время не будет учитываться и достанется только нужные мне данные.
import requests
from bs4 import BeautifulSoup as BS
class Parse():
def __init__(self, url):
self.url = url
self.values = []
source = requests.get(self.url)
self.html = BS(source.text, 'lxml')
def get_content(self):
table = self.html.find('table' , {'class' : 'common-table detail_table_highlight currency-new-table mobile-border-shadow'})
tbody = table.find('tbody')
for tr in tbody.find_all('tr'):
td = tr.find_all('td',{'class' : ''} and 'class' != 'mobile-hide')
for value in td:
if value.text != '':
self.values.append(value.text)
return self.values
При таком коде, выдает такие вот данные:
[' Банк «Веста»', '24.12 15:36',
' Банк «Спутник»', '23.12 10:48',
' Всероссийский Банк Развития Регионов', '24.12 11:02',
' Муниципальный Камчатпрофитбанк', '25.12 02:46',
' Нокссбанк', '25.12 08:13',
' Банк «Соколовский»', '25.12 09:59',
' Банк «Москва-Сити»', '25.12 09:52',
' Банк «Химик»', '25.12 09:42',
' БайкалИнвестБанк', '25.12 11:36',
' Кубаньторгбанк', '25.12 09:36',
' Заубер Банк', '25.12 11:29',
' Плюс Банк', '25.12 10:22',
' Кошелев-Банк', '25.12 10:36',
' Банк «Урал ФД»', '24.12 09:38',
' Банк Казани', '25.12 10:45',
' Тимер Банк', '25.12 11:36',
' Банк «Агророс»', '25.12 11:15',
' Владбизнесбанк', '25.12 10:36',
' ПромТрансБанк', '25.12 11:04',
' Трансстройбанк', '25.12 10:44']
Если убрать из кода class'!= 'mobile-hide, то мы получим все данные, вместе со временем:
['76,10 +0,0024.12 15:36', '76,62 +0,0024.12 15:36',
'75,00 +1,0023.12 10:48', '77,00 +0,0023.12 10:48',
'74,20 +0,0024.12 11:40', '75,10 +0,0024.12 11:40',
'73,88 +0,0024.12 11:02', '76,13 +0,0024.12 11:02',
'73,85 +0,2525.12 02:46', '74,60 -0,8525.12 02:46',
'73,80 -0,7025.12 08:13', '75,60 -0,6025.12 08:13',
'73,75 -0,8025.12 09:59', '74,85 -0,7525.12 09:59',
'73,70 -0,8025.12 09:52', '75,00 -1,0025.12 09:52',
'73,70 -1,3025.12 09:42', '74,25 -1,1525.12 09:42',
'73,67 +0,0725.12 11:36', '73,95 -0,0525.12 11:36',
'73,65 -0,2524.12 19:53', '75,05 -0,2524.12 19:53',
'73,62 -0,4025.12 09:36', '74,44 -0,1425.12 09:36',
'73,61 +0,1025.12 11:29', '74,09 -0,1025.12 11:29',
'73,60 -0,1025.12 10:22', '74,20 -0,3025.12 10:22',
'73,60 -0,1025.12 10:36', '74,10 -0,2025.12 10:36',
'73,56 -0,0524.12 09:38', '76,07 -0,0524.12 09:38',
'73,55 -0,1125.12 10:45', '73,99 -0,2225.12 10:45',
'73,54 +0,0125.12 11:36', '74,09 -0,1325.12 11:36',
'73,51 -0,5025.12 11:15', '74,08 -0,0725.12 11:15',
'73,50 -0,3025.12 10:36', '74,30
-0,5025.12 10:36', 'Покупаете USDПродаете RUBСвернуть']
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Переписал выборку и обработку
А так, в этой строке td_name, _, td_buy, td_sell = tds происходит игнорирование ячейки таблицы с временем.
import requests
from bs4 import BeautifulSoup
URL = 'https://www.vbr.ru/banki/kurs-valut/prodaja-usd/'
rs = requests.get(URL)
root = BeautifulSoup(rs.content, 'html.parser')
items = []
for tr in root.select('#bank_table > .show-detail'):
tds = tr.select('td')
td_name, _, td_buy, td_sell = tds
name = td_name.get_text(strip=True)
buy = td_buy.select_one('.currency-price').get_text(strip=True)
sell = td_sell.select_one('.currency-price').get_text(strip=True)
items.append((name, buy, sell))
print(f'Items ({len(items)}):')
for i, (name, buy, sell) in enumerate(items, 1):
print(f' {i:2}. {name!r}, buy={buy}, sell={sell}')
Результат:
Items (20):
1. 'Банк «Веста»', buy=76,10, sell=76,62
2. 'Банк «Спутник»', buy=75,00, sell=77,00
3. 'Всероссийский Банк Развития Регионов', buy=73,88, sell=76,13
4. 'Муниципальный Камчатпрофитбанк', buy=73,85, sell=74,60
5. 'Нокссбанк', buy=73,80, sell=75,60
6. 'Банк «Соколовский»', buy=73,75, sell=74,85
7. 'Плюс Банк', buy=73,70, sell=74,00
8. 'Банк «Москва-Сити»', buy=73,70, sell=75,00
9. 'Банк «Химик»', buy=73,70, sell=74,25
10. 'БайкалИнвестБанк', buy=73,67, sell=73,95
11. 'Кубаньторгбанк', buy=73,62, sell=74,44
12. 'Заубер Банк', buy=73,61, sell=74,09
13. 'Кошелев-Банк', buy=73,60, sell=74,10
14. 'Банк Казани', buy=73,55, sell=73,99
15. 'Тимер Банк', buy=73,54, sell=74,09
16. 'Банк «Агророс»', buy=73,51, sell=74,08
17. 'Владбизнесбанк', buy=73,50, sell=74,15
18. 'Банк «Новый век»', buy=73,50, sell=74,04
19. 'ПромТрансБанк', buy=73,50, sell=74,50
20. 'Трансстройбанк', buy=73,50, sell=74,10
