Каждый раз, когда я запускаю код, я получаю разные выходные данные.
Да.Каждый раз, когда страница возвращает разные результаты.Даже если ваш выбор неверен, это не объясняет, что вы каждый раз печатаете разные результаты.Я запускал это несколько раз и каждый раз получал разные результаты.
from bs4 import BeautifulSoup
import requests
import pandas as pd
r = requests.get("https://taripebi.ge/%E1%83%91%E1%83%94%E1%83%9C%E1%83%96%E1%83%98%E1%83%9C%E1%83%98%E1%83%A1-%E1%83%A4%E1%83%90%E1%83%A1%E1%83%94%E1%83%91%E1%83%98")
df=pd.read_html(r.text)
print(df)
Выходы
Прогон № 1
[ 0 1 2 3 4 5 6 7
0 NaN ---00 2.4992 2.5700 2.64 2.63 2.59100 ---00
1 NaN ---00 2.3593 2.4800 2.58 ---00 2.53 ---00
2 NaN ---00 2.0493 2.2495 ---00 2.0500 2.2400 ---00
3 NaN ---00 2.4300 2.5300 2.63 2.4510 2.58 ---00
4 NaN 2.3593 2.4100 2.4900 2.6300 2.4910 2.59 ---00
5 NaN ---00 2.1593 2.4295 ---00 2.2010 2.4500 ---00
6 NaN 2.0400 2.1493 2.2495 ---00 2.05 ---00 2.24]
Прогон № 2
[ 0 1 2 3 4 5 6 7
0 NaN ---00 2.3593 2.4800 2.58 ---00 2.53 ---00
1 NaN ---00 2.4300 2.5300 2.63 2.4510 2.58 ---00
2 NaN ---00 2.1593 2.4295 ---00 2.2010 2.4500 ---00
3 NaN 2.3593 2.4100 2.4900 2.6300 2.4910 2.59 ---00
4 NaN 2.0400 2.1493 2.2495 ---00 2.05 ---00 2.24
5 NaN ---00 2.4992 2.5700 2.64 2.63 2.59100 ---00
6 NaN ---00 2.0493 2.2495 ---00 2.0500 2.2400 ---00]
В идеале, согласно вашему коду, вы должны получать результат 2.41
каждый раз, когда запускаете свой код (приведенный в вопросе).
Что происходит, так это то, что эта страница выполняет некоторую авторизацию JavaScript в фоновом режиме и только затем заполняет действительные данные.
Для этих типов страниц лучше использовать селен .
from selenium import webdriver
from time import sleep
from bs4 import BeautifulSoup
driver = webdriver.Firefox()
driver.get('https://taripebi.ge/%E1%83%91%E1%83%94%E1%83%9C%E1%83%96%E1%83%98%E1%83%9C%E1%83%98%E1%83%A1-%E1%83%A4%E1%83%90%E1%83%A1%E1%83%94%E1%83%91%E1%83%98')
source = driver.page_source
soup =BeautifulSoup(source, 'lxml')
for paragraph in soup.find('div', style = "width: 40%;/* float: left; */"):
print(paragraph)
Выход
Прогон № 1
2.41
Прогон № 2
2.41