Программка для выкачки всех статей ЖЖ для указанного адреса

Oct 31, 2024 16:11


Подумалось, что неплохо было бы выкачать все свои статьи.

Привлёк Чат ЖПТ: https://mashagpt.link/keXoqF1x5M

Получил программку на Python:

import re

import requests

from bs4 import BeautifulSoup

def sanitize_filename(filename):

return re.sub(r'[\/:*?"<>|]', '_', filename)



def fetch_post_links(page_url):

response = requests.get(page_url)

response.raise_for_status()

soup = BeautifulSoup(response.text, 'html.parser')

links = [a['href'] for a in soup.find_all('a', class_='subj-link')]

return links

def fetch_post_content(post_url):

response = requests.get(post_url)

response.raise_for_status()

soup = BeautifulSoup(response.text, 'html.parser')

title_tag = soup.find('span', class_='aentry-post__title-text')

title = title_tag.get_text(strip=True) if title_tag else 'Без заголовка'

content_tag = soup.find('div', class_='aentry-post__text aentry-post__text--view')

content = content_tag.get_text(strip=True) if content_tag else 'Без содержания'

return title, content

def save_posts_to_file(filename, posts):

with open(filename, 'w', encoding='utf-8') as f:

for title, content, link in posts:

f.write(f"Заголовок: {title}\n")

f.write(f"Ссылка: {link}\n")

f.write(f"Содержание:\n{content}\n\n")

print(f"Статьи сохранены в {filename}")

def main():

base_url = "https://nikitayev.livejournal.com"

skip = 0

posts = []

seen_links = set()

while True:

page_url = f"{base_url}/?skip={skip}"

print(f"Загрузка страницы: {page_url}")

# Получаем ссылки на статьи

new_links = fetch_post_links(page_url)

# Проверяем наличие повторов

if any(link in seen_links for link in new_links):

print("Обнаружены повторяющиеся статьи. Прекращение загрузки.")

break

# Добавляем новые ссылки в множество просмотренных

seen_links.update(new_links)

for link in new_links:

print(f"Обработка статьи: {link}")

title, content = fetch_post_content(link)

posts.append((title, content, link))

skip += 50

if posts:

save_posts_to_file(sanitize_filename(base_url) + '.txt', posts)

else:

print("Статьи не были найдены.")

if __name__ == "__main__":

main()

Результат:





Пользуйтесь ИИ и будет всё хорошо!

искусственный интеллект

Previous post Next post
Up