Клюквенный морс + волшебная лампа = хорошо
А пока,
Рецепт культа многострочников
Тут разберемся как сделать так, чтобы показывало, сколько символов на странице. Что потом с этой инфой делать — дело ваше, лично я сижу, умилённо смотрю и пускаю слюни.
Первый шаг — устанавливаете python и все библиотеки, без которых не работает скрипт. Если это не получается сделать, то и не надо.
Дальше в браузере, в панели разработчика (f12, ctrl+shift+i, зависит от браузера) внимаа-а-тельно смотрите в на страничку темы про которую хотите всё узнать, с помощью "исследовать код элемента" тыкаете на любой пост в теме, в тэгах улавливаете общую логику, которой посты размечены.
Дальше скрипт на питоне, который всю нужную вам инфу достаёт. Должны быть установлены библиотеки bs4, requests, tqdm.
import requests
from bs4 import BeautifulSoup as bs
import time
import sys
from tqdm import tqdm
def get_username_from_article(article_soup):
return article_soup.find('div', attrs={'class':'PostUser'}).text
def get_text_from_article(article_soup):
return article_soup.find('div', attrs={'class': 'Post-body'}).text
def parse_single_page(url, f):
response = requests.get(url)
soup = bs(response.content, 'html5lib')
posts = soup.find_all('article')
for post in posts:
username = get_username_from_article(post)
text = get_text_from_article(post)
f.write(f'## {username}\n')
f.write(f'{text}\n')
if __name__ == '__main__':
if len(sys.argv) != 4:
print('Usage: python3 script.py <topic> <number of posts in topic> <output file>')
exit()
topic, n, fout = sys.argv[1], int(sys.argv[2]), sys.argv[3]
url = "https://forumspace.ru/d/{}/?page={}"
with open(fout, 'w') as f:
# num pages = num // 20 + 1, +2 to fit in range
for i in tqdm(range(1, n // 20 + 2)):
parse_single_page(url.format(topic, i), f)
time.sleep(1)
Если захотите что-то изменить, то обратите внимание на time.sleep(1) - это значит, что скрипт будет ждать одну секунду на этой строчке. Хороший тон ждать после каждого запроса к серверу, с которого вы парсите инфу, чтобы не создавать большую нагрузку.
Осталось запустить: python3 scraper.py 122-centurion-mk-vi-gruppa-2 188 group2.md.
"scraper.py" - так я назвал файл с этим скриптом, 122-centurion-mk-vi-gruppa-2 - id интересующей нас темы, его подсмотреть в url, 188 - число сообщений в теме, group2.txt - название файла, в который запишется результат.
Если хотите узнать, сколько в файле символов, то откройте редактором, который умеет это показывать. Если вам не нужен текст, то можете сами изменить скрипт - как домашнее задание
Например, для темы Centurion MK VI - Группа 2 на момент, когда в ней ещё 188 сообщений (а это далеко не конец), получаем 541597 символов, 80843 слов.
А в теме Centurion MK VI на момент, когда там 261 сообщение - 386169 символов, 55724 слов.
Если справились с установкой всего нужного, но не справились с питоном, а при этом хотите в скрипте сделать что-то своё, то спрашивайте чатгпт. Если справились с питоном - молодцы. В любом случае, не забывайте про time.sleep после запросов, это важно.
Теперь можно пускать слюни.