
29.09.2024, 12:09
|
|
Участник форума
Регистрация: 15.07.2021
Сообщений: 142
С нами:
2543284
Репутация:
33
|
|
Сообщение от dan|0
Доброго времени суток читающие, начал потихоньку изучать пайтон и столкнулся с такой проблемой:
Не получается спарсить данные с сайта, а именно текст находящийся в заголовке
Python:
Код:
import
requests
from
bs4
import
BeautifulSoup
as
b
import
re
URL
=
'https://stalcraft-status.ru/'
r
=
requests
.
get
(
URL
)
soup
=
b
(
r
.
text
,
'html.parser'
)
# Ищем элемент, который содержит классы 'md:hidden text-2xl' или 'hidden md:block text-2xl'
vibros
=
soup
.
find
(
'h4'
,
class_
=
re
.
compile
(
r'(md:hidden|hidden md:block) text-2xl'
)
)
# Выводим результат
if
vibros
:
text
=
vibros
.
get_text
(
)
print
(
text
)
else
:
print
(
"Элемент не найден"
)
Прошу помогите разобраться, или может быть я что-то не так делаю
Доброе утро, так как загрузка сайта осуществляется через 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
(
)
# Закрываем браузер
|
|
|