codeFlowType:
codeWrite
codeFlowLang:
Python
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)
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')
page
, которая обновляется с каждой итерацией цикла, чтобы запрашивать разные страницы.url
и параметры для пагинации корректны для сайта, который вы пытаетесь парсить.robots.txt
).