ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Парсинг с веб-страницы (https://forum.antichat.xyz/showthread.php?t=1520709)

dan|0 17.09.2024 17:01

Доброго времени суток читающие, начал потихоньку изучать пайтон и столкнулся с такой проблемой:

Не получается спарсить данные с сайта, а именно текст находящийся в заголовке

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
(
"Элемент не найден"
)



Прошу помогите разобраться, или может быть я что-то не так делаю

Макаров 18.09.2024 19:53

Загрузка данного блока страницы происходит javascript`ом с использованием ajax, и повлиять на его работу только лишь запросом не получится. Нужно либо использовать selenium, либо использовать встроенное оповещение(stalcraft).

FixZer 29.09.2024 12:09

Цитата:

Сообщение от 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
(
)
# Закрываем браузер


dan|0 07.10.2024 18:18

Цитата:

Сообщение от 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 бота.

FixZer 08.10.2024 19:34

Цитата:

Сообщение от dan|0

Спасибо вам, теперь останется только почитать/посмотреть как работает "Selenium", и можно ли будет это как-то этот код перенести в tg бота.

Можно )

neverlane 08.10.2024 19:45

можно и не юзать селениум а просто выдрать регулярками отсюда





https://forum.antichat.xyz/attachmen...d4307b4349.png


Время: 22:40