CoderCastrov logo
CoderCastrov
NLP

{nlp.1} Парсинг французских новостных статей.

{nlp.1} Парсинг французских новостных статей.
просмотров
1 мин чтение
#NLP
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')

    Спасибо.