ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Python (https://forum.antichat.xyz/forumdisplay.php?f=205)
-   -   Парсер префиксов на форуме (https://forum.antichat.xyz/showthread.php?t=1535303)

uqowivad 02.05.2025 22:54

Этот скрипт предназначен для парсинга профилей пользователей с форума. Он проходит по страницам пользователей, начиная с указанного ID, и собирает данные о никнейме и префиксе пользователя.

То что поддерживается на данный момент:

- Проверенный

- Администратор

- Всефорумный модератор

- BH Team

- Забаненный

- Обычный пользователь

- Друг

- Модератор

- Кастомные префиксы (например, "Няшка :з")

- Данные о пользователях записываются в файл user_data.txt.

Использование:

1. Скачайте или скопируйте код и сохраните его в файл.

2. Перед запуском убедитесь, что у вас установлен Python 3.x и необходимые библиотеки:

- requests

- beautifulsoup4

3. Запустите скрипт. В файле last_processed_id.txt указывается ID пользователя, с которого нужно начать парсинг (по умолчанию это будет 1).

4. Скрипт будет собирать данные и записывать их в файл user_data.txt, а также обновлять статистику по каждому типу префикса.

5. В конце работы будет выведена информация о количестве пользователей с каждым типом префикса.

Код:

Python:





Код:

import
requests
from
bs4
import
BeautifulSoup
import
time
def
get_user_data
(
member_id
)
:
url
=
f'https://www.blast.hk/members/{member_id}'
try
:
response
=
requests
.
get
(
url
)
response
.
encoding
=
'utf-8'
if
response
.
status_code
==
200
:
soup
=
BeautifulSoup
(
response
.
text
,
'html.parser'
)
error_message
=
soup
.
find
(
'div'
,
class_
=
'blockMessage'
)
if
error_message
and
'Запрашиваемый пользователь не найден'
in
error_message
.
text
:
return
None
,
f"Пользователь{member_id}не найден"
username_tag
=
soup
.
find
(
'span'
,
class_
=
'username'
)
username
=
username_tag
.
get_text
(
strip
=
True
)
if
username_tag
else
'Не найден'
prefix
=
get_user_prefix
(
soup
)
return
username
,
prefix
elif
response
.
status_code
==
404
:
return
None
,
f"Пользователь{member_id}не существует"
else
:
return
None
,
f"Ошибка{response.status_code}при запросе к{url}"
except
Exception
as
e
:
return
None
,
f"Ошибка при запросе{url}:{e}"
def
get_user_prefix
(
soup
)
:
user_banner_tag
=
soup
.
find
(
'em'
,
class_
=
'userBanner'
)
if
user_banner_tag
:
return
user_banner_tag
.
get_text
(
strip
=
True
)
user_title_tag
=
soup
.
find
(
'span'
,
class_
=
'userTitle'
)
return
user_title_tag
.
get_text
(
strip
=
True
)
if
user_title_tag
else
'Не указан'
def
get_last_processed_id
(
)
:
try
:
with
open
(
'last_processed_id.txt'
,
'r'
)
as
f
:
return
int
(
f
.
read
(
)
.
strip
(
)
)
except
FileNotFoundError
:
return
1
def
save_last_processed_id
(
member_id
)
:
with
open
(
'last_processed_id.txt'
,
'w'
)
as
f
:
f
.
write
(
str
(
member_id
)
)
def
append_data_to_file
(
user_data
)
:
with
open
(
'user_data.txt'
,
'a'
,
encoding
=
'utf-8'
)
as
f
:
f
.
writelines
(
user_data
)
def
main
(
)
:
last_processed_id
=
get_last_processed_id
(
)
user_data
=
[
]
prefix_count
=
{
"Проверенный"
:
0
,
"Администратор"
:
0
,
"Всефорумный модератор"
:
0
,
"BH Team"
:
0
,
"Забаненный"
:
0
,
"Обычный пользователь"
:
0
,
"Друг"
:
0
,
"Модератор"
:
0
,
"Не указан"
:
0
}
requests_per_second
=
15
delay
=
1
/
requests_per_second
print
(
"Запуск парсинга..."
)
while
last_processed_id
=
50
:
append_data_to_file
(
user_data
)
user_data
=
[
]
save_last_processed_id
(
last_processed_id
)
last_processed_id
+=
1
time
.
sleep
(
delay
)
if
user_data
:
append_data_to_file
(
user_data
)
with
open
(
'user_data.txt'
,
'a'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
"\nОбщее количество пользователей по префиксам:\n"
)
for
prefix
,
count
in
prefix_count
.
items
(
)
:
f
.
write
(
f"{prefix}—{count}\n"
)
print
(
"Парсинг завершен."
)
if
__name__
==
"__main__"
:
main
(
)


yung milonov 03.05.2025 00:05

самый полезный скрипт за всю историю бластхак

$KAS 03.05.2025 00:50

с чего бы начать...

говно, на этом закончим

TvoyFanat 03.05.2025 20:19

не переставай употреблять тяжелое


Время: 22:44