NLP
{nlp.1} Парсинг французских новостных статей.
Table Of Content
Газета - отличный источник данных не только для изучения иностранного языка, но и для исследований в области обработки естественного языка (NLP). В этой истории я буду собирать данные с 20minutes.fr, французской газеты, написанной на простом французском языке.
Сначала я проанализирую веб-сайт.
Веб-сайт выглядит так:
Поскольку здесь нет поискового API или чего-либо полезного, я посмотрю случайную статью, чтобы найти что-то вроде идентификатора статьи.
Изучая HTML-код с ключевыми словами, такими как "20minutes.fr", я обнаружил, что цифры, следующие сразу после последнего слэша, соответствуют "content_id". Выяснилось, что каждая статья доступна по адресу https://20minutes.fr/article/%content_id%.
from bs4 import BeautifulSoup
import requests
from tqdm import trangesess = requests.Session()
invalid_title = "Страница не найдена — 20minutes.fr"
url_base = 'https://www.20minutes.fr/article/'all_data = {'content_id':[], 'text':[]}# Я обнаружил, что нужно проверить (i%4 == 3). 2825151 - это ID одной из последних статей.
for i in trange(2825151-1000,2825151,4):
source = sess.get(url_base+str(i)).content
soup = BeautifulSoup(source,"html.parser")
title= soup.find("title").text
if title!="Страница не найдена — 20minutes.fr":
print("Найдено:",title,url_base+str(i))
else:
continue soup = soup.find(id="main-content")
inArticle_txt = ''
for txt in soup.find_all("p", attrs={'class': None}):
inArticle_txt += txt.text+' ' all_data["content_id"].append(i)
all_data["text"].append(inArticle_txt)
Для сохранения файла используй:
import pandas as pdlines = pd.DataFrame.from_dict(all_data)
lines.to_csv('20minutes_1kids~2826151.csv',sep='\t',encoding='utf-8')
Спасибо.