Клюквенный морс + волшебная лампа = хорошо
А пока,
Рецепт культа многострочников
Тут разберемся как сделать так, чтобы показывало, сколько символов на странице. Что потом с этой инфой делать — дело ваше, лично я сижу, умилённо смотрю и пускаю слюни.
Первый шаг — устанавливаете 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
после запросов, это важно.
Теперь можно пускать слюни.