Import requests from bs4 import BeautifulSoup import

Import requests from bs4 import BeautifulSoup import pandas as pd # Функция для извлечения статей def extract_articles(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') articles = [] for item in soup.find_all('article'): title = item.find('h2').text if item.find('h2') else 'No title' content = item.find('p').text if item.find('p') else 'No content' articles.append({'title': title, 'content': content}) return articles url = 'https://www.lavanguardia.com' articles_data = extract_articles(url) # Преобразование данных в DataFrame df = pd.DataFrame(articles_data) # Сохранение в файл df.to_csv('articles_data.csv', index=False, encoding='utf-8') сделай так чтобы он считывал с сайта не менее 5000 записей
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: Python
Создано: 12.03.2025 16:39

Import requests from bs4 import BeautifulSoup import pandas as pd

Функция для извлечения статей

def extract_articles(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser')

articles = []
for item in soup.find_all('article'):
    title = item.find('h2').text if item.find('h2') else 'No title'
    content = item.find('p').text if item.find('p') else 'No content'
    articles.append({'title': title, 'content': content})

return articles

url = 'https://www.lavanguardia.com' articles_data = extract_articles(url)

Преобразование данных в DataFrame

df = pd.DataFrame(articles_data)

Сохранение в файл

df.to_csv('articles_data.csv', index=False, encoding='utf-8')

сделай так чтобы он считывал с сайта не менее 5000 записей

Для того чтобы извлекать 5000 статей с сайта, нам нужно будет реализовать пагинацию, если сайт поддерживает её. Многие новостные сайты используют номера страниц в URL или предлагают кнопки "показать еще" для загрузки дополнительных статей. В этом примере я предположу, что сайт разделяет статьи на страницы с параметром page, и будем обращаться к ним в цикле до тех пор, пока не наберем необходимое количество статей.

Вот обновленный код:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# Функция для извлечения статей
def extract_articles(url, max_articles=5000):
    articles = []
    page = 1

    while len(articles) < max_articles:
        response = requests.get(f"{url}?page={page}")
        soup = BeautifulSoup(response.text, 'html.parser')

        item_found = False
        for item in soup.find_all('article'):
            title = item.find('h2').text if item.find('h2') else 'No title'
            content = item.find('p').text if item.find('p') else 'No content'
            articles.append({'title': title, 'content': content})
            item_found = True

            if len(articles) >= max_articles:  # Обрезаем список до max_articles
                break

        if not item_found:  # Если на странице не было статей, выходим из цикла
            break
            
        page += 1  # Переход к следующей странице

    return articles[:max_articles]  # Возвращаем только max_articles статей

url = 'https://www.lavanguardia.com'
articles_data = extract_articles(url)

# Преобразование данных в DataFrame
df = pd.DataFrame(articles_data)

# Сохранение в файл
df.to_csv('articles_data.csv', index=False, encoding='utf-8')

Объяснение кода:

  1. Пагинация: Мы добавили переменную page, которая обновляется с каждой итерацией цикла, чтобы запрашивать разные страницы.
  2. Ограничение на количество статей: Код продолжает собирать статьи, пока общее количество не достигнет 5000 или пока на странице не останется статей для парсинга.
  3. Проверка наличия статей: Если на странице не найдено ни одной статьи, программа завершает цикл, чтобы избежать пустых запросов.

Примечания:

  • Убедитесь, что url и параметры для пагинации корректны для сайта, который вы пытаетесь парсить.
  • Обращение к большому количеству страниц может вызвать блокировку вашего IP-адреса со стороны сайта, поэтому рекомендуется использовать временные задержки между запросами и следить за правилами сайта (например, проверить файл robots.txt).