Top.Mail.Ru
Ответы

Написать парсер для сайта "Школа програмистов" на языке Python

Помогите пожалуйста!
Нужно написать программу в среде PyCharm, которая реализует прикладную задачу для сайта https://acmp.ru/index.asp?main=tasks
Необходимо получить список задач с указанием для каждой задачи:
- название
- тема
- условие задачи с входными/выходными данными

По дате
По рейтингу
Аватар пользователя
Мыслитель

Конечно! Я могу помочь вам написать парсер для сайта "Школа программистов" на языке Python. Для этой задачи мы будем использовать библиотеку `requests` для получения HTML-кода страницы и библиотеку `BeautifulSoup` для извлечения информации из HTML.

Вот пример кода, который поможет вам начать:

```python
import requests
from bs4 import BeautifulSoup

# Функция для парсинга страницы с задачами
def parse_tasks_page():
url = ' https://acmp.ru/index.asp?main=tasks '
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Найти все элементы задач
task_elements = soup.find_all('div', class_='problems_links')
for task_element in task_elements:
# Получить название задачи
title = task_element.find('a').text.strip()

# Получить тему задачи
theme = task_element.find('span', class_='problem_status').text.strip()

# Получить ссылку на задачу
task_url = ' https://acmp.ru/ ' + task_element.find('a')['href']

# Перейти на страницу задачи для получения условия с входными/выходными данными
task_response = requests.get(task_url)
task_soup = BeautifulSoup(task_response.text, 'html.parser')

# Получить условие задачи с входными/выходными данными
condition = task_soup.find('pre', class_='ProblemText').text.strip()

# Вывести информацию о задаче
print('Название задачи:', title)
print('Тема:', theme)
print('Условие задачи:', condition)
print('---')

# Вызов функции для парсинга страницы с задачами
parse_tasks_page()
```

Этот код отправляет GET-запрос на страницу задач ` https://acmp.ru/index.asp?main=tasks` , затем с помощью BeautifulSoup находит и извлекает необходимую информацию о задачах, такую как название, тема и условие с входными/выходными данными. Затем эта информация выводится в консоль.

Пожалуйста, убедитесь, что у вас установлены библиотеки `requests` и `beautifulsoup4`. Если нет, вы можете установить их с помощью команды `pip install requests beautifulsoup4` в терминале.

Надеюсь, это поможет вам начать парсинг сайта "Школа программистов".

Аватар пользователя
Мыслитель

Я могу помочь вам написать парсер для сайта "Школа программистов" на языке Python. Вот пример программы, которая будет получать список задач с их названиями, темами и условиями задач с входными/выходными данными:

import requests
from bs4 import BeautifulSoup

def parse_tasks():
url = ' https://acmp.ru/index.asp?main=tasks '
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

task_list = []
task_table = soup.find('table', {'class': 'main'})
rows = task_table.find_all('tr')

for row in rows[1:]:
columns = row.find_all('td')
task_name = columns[1].find('a').text.strip()
task_topic = columns[2].text.strip()

# Переход на страницу с условием задачи
task_url = ' https://acmp.ru/ ' + columns[1].find('a')['href']
task_response = requests.get(task_url)
task_soup = BeautifulSoup(task_response.content, 'html.parser')

# Парсинг условия задачи
task_condition = task_soup.find('div', {'class': 'content'}).text.strip()

task = {
'name': task_name,
'topic': task_topic,
'condition': task_condition
}
task_list.append(task)

return task_list

# Пример использования
tasks = parse_tasks()

for task in tasks:
print('Название задачи:', task['name'])
print('Тема задачи:', task['topic'])
print('Условие задачи:', task['condition'])
print('---')

Вы можете скопировать данный код и вставить его в среду разработки PyCharm. Затем запустите программу, и она выведет список задач с их названиями, темами и условиями задач с входными/выходными данными.

Обратите внимание, что для работы программы требуется установка библиотеки requests и beautifulsoup4. Вы можете установить их с помощью команды pip install requests beautifulsoup4 в терминале PyCharm.

Пожалуйста, учтите, что парсинг веб-сайтов может быть ограничен политикой сайта и может нарушать условия использования сайта. Поэтому рекомендуется ознакомиться с правилами сайта и получить разрешение на парсинг данных, прежде чем использовать подобные программы.