Actualités est un robot d'information open source et facile à utiliser qui extrait des informations structurées de presque tous les sites Web de nouvelles. Il peut suivre récursivement les hyperliens internes et lire les flux RSS pour récupérer à la fois les articles archivés les plus récents et également anciens. Il vous suffit de fournir l'URL racine du site Web d'actualités pour le ramper complètement. Actualités combine la puissance de plusieurs bibliothèques et outils de pointe, tels que le scracy, le journal et la lisibilité.
News-Gease propose également un mode de bibliothèque, qui permet aux développeurs de Python d'utiliser les fonctionnalités rampantes et d'extraction au sein de leur propre programme. De plus, les nouvelles-plats permettent de ramper et d'extraire des articles de l'archive (très) grandes nouvelles sur CommonCrawl.org.
Si vous souhaitez contribuer à la nouvelle, veuillez d'abord lire ici.
23/03/2021: Si vous êtes intéressé par la classification des sentiments dans les articles de presse, consultez notre ensemble de données à grande échelle pour la classification des sentiments dépendants de la cible. Nous publions également un modèle neuronal facile à utiliser qui atteint des performances de pointe. Visitez le projet ici.
06/01/2018: Si vous êtes intéressé par l'extraction des événements de l'actualité, vous pouvez également consulter notre nouveau projet, Giveme5w1h - un outil qui extrait des phrases répondant aux cinq W et One Ques.
Actualités - Extrait les attributs suivants des articles de presse. Un fichier JSON exampltaire comme extrait par News-Beease peut être trouvé ici.
News-Beease prend en charge trois cas d'utilisation principaux, qui sont expliqués plus en détail dans ce qui suit.
python3 -m newsplease.examples.commoncrawl C'est super facile, nous promettons!
News-Beeats fonctionne sur Python 3.8+.
$ pip install news-pleaseVous pouvez accéder aux fonctionnalités de base de l'actualité, à savoir, c'est-à-dire l'extraction d'informations semi-structurées à partir d'un ou plusieurs articles de presse, dans votre propre code en utilisant des nouvelles-plats en mode bibliothèque. Si vous souhaitez utiliser l'extraction complète de sites Web de News-Vease (compte tenu uniquement de l'URL racine) ou du mode rampant continu (en utilisant RSS), vous devrez utiliser le mode CLI, qui est décrit plus loin.
from newsplease import NewsPlease
article = NewsPlease . from_url ( 'https://www.nytimes.com/2017/02/23/us/politics/cpac-stephen-bannon-reince-priebus.html?hp' )
print ( article . title )Un échantillon d'un article extrait peut être trouvé ici (en tant que fichier JSON).
Si vous souhaitez ramper plusieurs articles à la fois, éventuellement avec n'importe quel paramètre facultatif pris par demande.request ()
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })ou si vous avez un fichier contenant toutes les URL (chaque ligne contenant une seule URL)
NewsPlease . from_file ( path )ou si vous avez des données HTML brutes (vous pouvez également fournir l'URL d'origine pour augmenter la précision de l'extraction de la date d'édition)
NewsPlease . from_html ( html , url = None )Ou si vous avez un fichier WARC (consultez également notre flux de travail CommonCrawl, qui fournit des méthodes pratiques pour filtrer les archives de CommonCrawl pour des médias et des dates spécifiques)
NewsPlease . from_warc ( warc_record )En mode bibliothèque, les nouvelles tenteront de télécharger et d'extraire les informations de chaque URL. Les fonctions décrites précédemment bloquent, c'est-à-dire que le retour une fois que les nouvelles-placés auront tenté toutes les URL. La liste résultante contient tous les articles extraits avec succès.
Enfin, vous pouvez traiter les informations extraites contenues dans les objets de l'article. Par exemple, pour exporter dans un format JSON, vous pouvez utiliser:
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-please Actualités, les actualités commenceront alors à ramper quelques pages d'exemples. Pour terminer le processus, appuyez sur CTRL+C . Les nouvelles-placés s'arrêteront ensuite dans les 5-60 secondes. Vous pouvez également appuyer deux fois sur CTRL+C , ce qui tuera immédiatement le processus (non recommandé, cependant).
Les résultats sont stockés par défaut dans les fichiers JSON dans le dossier data . Dans la configuration par défaut, les nouvelles-placent également les fichiers HTML d'origine.
Très probablement, vous ne voudrez pas ramper à partir des sites Web fournis dans notre exemple de configuration. Rendez-vous simplement dans le fichier sitelist.hjson et ajoutez les URL racine des pages Web des nouvelles de votre choix. News-Bease peut également extraire les événements les plus récents du projet GDELT, voir ici.
News-Beease soutient également l'exportation vers Elasticsearch. L'utilisation d'Elasticsearch permettra également la fonctionnalité de versioning. Tout d'abord, activez-le dans le config.cfg au répertoire de configuration, qui est par défaut ~/news-please/config mais peut également être modifié avec le paramètre -c à un emplacement personnalisé. Dans le cas où le répertoire n'existe pas, un répertoire par défaut sera créé à l'emplacement spécifié.
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} C'est ça! Sauf que si votre base de données ElasticSearch n'est pas située sur http://localhost:9200 , utilise un nom d'utilisateur / mot de passe ou une authentification CA-certificat différent. Dans ces cas, vous devrez également modifier ce qui suit.
[Elasticsearch]
host = localhost
port = 9200
...
# Credentials used for authentication (supports CA-certificates):
use_ca_certificates = False # True if authentification needs to be performed
ca_cert_path = '/path/to/cacert.pem'
client_cert_path = '/path/to/client_cert.pem'
client_key_path = '/path/to/client_key.pem'
username = 'root'
secret = 'password' Les actualités permettent de stocker des articles dans une base de données PostgreSQL, y compris la fonction de versioning. Pour exporter vers PostgreSQL, ouvrez le fichier de configuration correspondant ( config_lib.cfg pour le mode bibliothèque et config.cfg pour le mode CLI) et ajoutez le module postgresqlstorage au pipeline et ajustez les informations d'identification de la base de données:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.PostgresqlStorage' :350
}
[Postgresql]
# Postgresql-Connection required for saving meta-informations
host = localhost
port = 5432
database = 'news-please'
# schema = 'news-please'
user = 'user'
password = 'password' Si vous prévoyez d'utiliser les nouvelles-plaies et son exportation vers PostgreSQL dans un environnement de production, nous vous recommandons de désinstaller le package psycopg2-binary et d'installer psycopg2 . Nous utilisons le premier car il ne nécessite pas de compilateur C pour être installé. Voir ici, pour plus d'informations sur les différences entre psycopg2 et psycopg2-binary et comment configurer un environnement de production.
News-Beease permet de stocker des articles sur une base de données Redis, y compris la fonction de versioning. Pour exporter vers Redis, ouvrez le fichier de configuration correspondant ( config_lib.cfg pour le mode bibliothèque et config.cfg pour le mode CLI) et ajoutez le module Redisstorage au pipeline et ajustez les informations d'identification de connexion:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.RedisStorage' :350
}
[Redis]
host = localhost
port = 6379
db = 0
# You can add any redis connection parameter here
ssl_check_hostname = True
username = "news-please"
max_connections = 24Ce pipeline doit également être compatible avec AWS Elasticache et GCP MemoryStore
Nous avons collecté un tas d'informations utiles pour les utilisateurs et les développeurs. En tant qu'utilisateur, vous ne traiterez probablement que deux fichiers: sitelist.hjson (pour définir les sites à ramper) et config.cfg (probablement seulement, au cas où vous souhaitez modifier la configuration).
Vous pouvez trouver plus d'informations sur l'utilisation et le développement dans notre wiki! Avant de nous contacter, veuillez consulter le wiki. Si vous avez toujours des questions sur la façon d'utiliser les nouvelles, veuillez créer une nouvelle question dans Discartionson ici sur GitHub. Veuillez comprendre que nous ne sommes pas en mesure de fournir un support individuel par e-mail. Nous pensons que l'aide est plus précieuse si elle est partagée publiquement afin que davantage de personnes puissent en bénéficier. Cependant, si vous avez toujours besoin d'un soutien individuel, par exemple, en raison de la confidentialité de votre projet, nous pourrons peut-être vous fournir une consultation privée. Contactez-nous pour plus d'informations sur les prix et plus de détails.
Pour les rapports de bogues, nous vous demandons d'utiliser le modèle de rapport de bogue. Assurez-vous que vous utilisez la dernière version de News-Bease, car nous ne pouvons pas soutenir les versions plus anciennes. Comme décrit précédemment, nous ne pouvons pas soutenir les problèmes ou les questions envoyées par e-mail.
Vos dons sont grandement appréciés! Ils nous libéreront pour travailler davantage sur ce projet, pour assumer des tâches telles que l'ajout de nouvelles fonctionnalités, la prise en charge des bugs-fixe et la lutte contre les préoccupations supplémentaires avec la bibliothèque.
Ce projet n'aurait pas été possible sans les contributions des étudiants suivants (ordonné par ordre alphabétique):
Nous remercions également tous les autres contributeurs, que vous pouvez trouver sur la page des contributeurs!
Si vous utilisez News-Bease, veuillez citer notre article (ResearchGate, Mendeley):
@InProceedings{Hamborg2017,
author = {Hamborg, Felix and Meuschke, Norman and Breitinger, Corinna and Gipp, Bela},
title = {news-please: A Generic News Crawler and Extractor},
year = {2017},
booktitle = {Proceedings of the 15th International Symposium of Information Science},
location = {Berlin},
doi = {10.5281/zenodo.4120316},
pages = {218--223},
month = {March}
}
Vous pouvez trouver plus d'informations à ce sujet et à d'autres projets d'information sur notre site Web.
Voulez-vous contribuer? Super, nous sommes toujours heureux de tout soutien sur ce projet! Nous recherchons particulièrement des demandes de traction qui corrigent les bogues. Nous accueillons également les demandes de traction qui contribuent à vos propres idées.
En contribuant à ce projet, vous acceptez que vos contributions seront autorisées sous la licence du projet.
Nous aimons les contributions de nos utilisateurs! Si vous prévoyez de soumettre une demande de traction, veuillez d'abord ouvrir un problème et déconcerter le problème que vous souhaitez résoudre ou ce que vous souhaitez améliorer et comment! De cette façon, nous pouvons discuter de si votre idée pourrait être ajoutée à News-Seed en premier lieu et, dans l'affirmative, comment il pourrait être mis en œuvre pour s'intégrer dans l'architecture et le style de codage. Dans le numéro, veuillez déclarer que vous prévoyez de mettre en œuvre les fonctionnalités décrites.
Malheureusement, nous n'avons pas de ressources pour implémenter les fonctionnalités demandées par les utilisateurs. Au lieu de cela, nous vous recommandons de mettre en œuvre des fonctionnalités dont vous avez besoin et si vous souhaitez ouvrir une demande de traction ici afin que la communauté puisse également bénéficier de vos améliorations.
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser les nouvelles-vous-même, sauf conformément à la licence. Une copie de la licence est incluse dans le projet, voir le fichier License.txt.
Sauf exiger la loi applicable ou convenu par écrit, les logiciels distribués en vertu de la licence sont distribués sur une base «tel quel», sans garantie ou conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence. Le logo News-Bease est gracieuseté de Mario Hamborg.
Copyright 2016-2024 L'équipe News-Bease