
07.10.2024, 18:18
|
|
Новичок
Регистрация: 07.06.2018
Сообщений: 9
С нами:
4175722
Репутация:
51
|
|
Сообщение от FixZer
Доброе утро, так как загрузка сайта осуществляется через JavaScript разумнее всего использовать библиотеку Selenium.
Вот пример кода:
Пример кода:
Код:
from
selenium
import
webdriver
from
selenium
.
webdriver
.
common
.
by
import
By
from
selenium
.
webdriver
.
support
.
ui
import
WebDriverWait
from
selenium
.
webdriver
.
support
import
expected_conditions
as
EC
from
selenium
.
webdriver
.
edge
.
options
import
Options
as
EdgeOptions
# Настройки
options
=
EdgeOptions
(
)
options
.
add_experimental_option
(
'excludeSwitches'
,
[
'enable-logging'
]
)
# Инициализация драйвера
driver
=
webdriver
.
Edge
(
options
=
options
)
# Открываем сайт
driver
.
get
(
'https://stalcraft-status.ru/'
)
# Ждем, пока элемент не станет доступен
try
:
element
=
WebDriverWait
(
driver
,
20
)
.
until
(
EC
.
presence_of_element_located
(
(
By
.
XPATH
,
"/html/body/div/section[2]/div/section[3]/div[1]/h4[2]"
)
)
)
# С помощью этого элемента проверяем, загружена ли полностью страница или нет, так как /html/body/div/section[2]/div/section[3]/div[1]/h4[2] отвечает за текст "Последний выброс был 2 часа назад", а он в свою очередь загружается через JavaScript
print
(
"Страница полностью загружена"
)
except
Exception
as
e
:
print
(
e
)
with
open
(
'html.html'
,
'w'
,
errors
=
'ignore'
,
encoding
=
'utf-8'
)
as
file
:
file
.
write
(
driver
.
page_source
)
# здесь сохраняем файл с исходным кодом сайта, чтобы удобно было работать, так как html сильно отличается от оригинальной страницы
# Найдем элемент с нужным XPATH
vibros
=
driver
.
find_element
(
By
.
XPATH
,
"/html/body/div[1]/section[2]/div/section[4]/div[1]/h4 | /html/body/div/section[2]/div/section[3]/div[1]/h4[2]"
)
# Выведем текст элемента
if
vibros
:
text
=
vibros
.
text
print
(
text
)
else
:
print
(
"Элемент не найден"
)
driver
.
quit
(
)
# Закрываем браузер
Спасибо вам, теперь останется только почитать/посмотреть как работает "Selenium", и можно ли будет это как-то этот код перенести в tg бота.
|
|
|