Как выполнить парсинг текста из всех ссылок, не вводя при этом сами ссылки

Рейтинг: -3Ответов: 1Опубликовано: 21.02.2023

В общем, мне нужно разработать парсинг сайта.

Нужно, чтобы был вывод всех слов из сайта https://fasie.ru/programs и ссылок на программы.

В частности, "ИнноШкольник", "УМНИК", "Студенческий стартап", "Старт", "Развитие", "Интернационализация", "Коммерциализация" и "Кооперация". В каждой программе по четыре раздела: "Условие", "Документы", "Конкурсы" и "Контакты".

Нужно вывести все содержимое из этих разделов. Но при этом не должно быть ссылок на данные программы. Чтобы при введении новой программы из сайта можно было не писать код.

Нужно чтобы всё было автоматически.


Ну, вот для примера код

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
import webbrowser
import urllib
import urllib.request
import os
from urllib.request import urlretrieve
url = "https://fasie.ru/programs/programma-innoshkolnik/"
page = urlopen(url)
html = page.read().decode("utf-8")
soup = BeautifulSoup(html, "html.parser")
granitza = "_"
gran = granitza.center(49)
lab1 = "Основные условия"
label1 = lab1.center(95)
div1 = soup.find("section", id="content-tab1").text
a1 = re.sub("\s+", " ",div1)
print("\u0332\u203E".join(gran))
print("\u0332".join(label1))
print(a1)

Можно как-то сделать так, чтобы в url вместо кода на страницу, были ссылки на другие программы из "fasie.ru/programs"

Ответы

▲ 1Принят

Если я верно понял суть вопроса, то Вам необходимо попасть на одну главную страницу и там собрать данные по всем программам. И сделать это так, что бы ПО ходило автоматически по ссылкам программ. Вот пример реализации:

from bs4 import BeautifulSoup
from urllib.request import urlopen


url = "https://fasie.ru/programs/"
page = urlopen(url)
html = page.read().decode("utf-8")
soup = BeautifulSoup(html, "html.parser")
div = soup.find_all('div', class_ = 'wrap')
programms_list = div[1].find('ul', class_='').find_all('ul', class_='')[1]
hrefs = programms_list.find_all('a')
for h in hrefs:
    url_h = f"https://fasie.ru{h.get('href')}"
    page_h = urlopen(url_h)
    html_h = page_h.read().decode("utf-8")
    soup_h = BeautifulSoup(html_h, "html.parser")
    sections = soup_h.find_all('section')
    for s in sections:
        print(s.text)

Мы собираем все ссылки на программы на странице, а затем в цикле обходим все программы и собираем данные о каждой программе. "Условие", "Документы", "Конкурсы" и "Контакты" и пр. Сбор данных реализован, осталось Вам привести эти данные в тот формат, который Вам нужен.