News-Please ist ein Open-Source-Crawler, der strukturierte Informationen aus nahezu jeder Nachrichten-Website extrahiert. Es kann interne Hyperlinks rekursiv folgen und RSS -Feeds lesen, um sowohl jüngste als auch auch alte, archivierte Artikel abzurufen. Sie müssen nur die Root -URL der Nachrichten -Website bereitstellen, um sie vollständig zu kriechen. News-Please kombiniert die Leistung mehrerer hochmoderner Bibliotheken und Tools wie Scrapy, Zeitung und Lesbarkeit.
News-Please bietet auch einen Bibliotheksmodus, mit dem Python-Entwickler die Kriech- und Extraktionsfunktionen in ihrem eigenen Programm verwenden können. Darüber hinaus ermöglicht News-Please, Artikel aus dem (sehr) großen Nachrichtenarchiv unter Commoncrawl.org bequem zu kriechen und zu extrahieren.
Wenn Sie zu News-Tlease beitragen möchten, lesen Sie bitte zuerst hier.
23.03.2021: Wenn Sie sich für die Klassifizierung von Sentiment in Nachrichtenartikeln interessieren, finden Sie in unserem großen Datensatz für zielabhängige Stimmungsklassifizierung. Wir veröffentlichen auch ein benutzerfreundliches neuronales Modell, das hochmoderne Leistung erzielt. Besuchen Sie das Projekt hier.
06/01/2018: Wenn Sie an der Event -Extraktion aus Nachrichten interessiert sind, möchten Sie möglicherweise auch unser neues Projekt Giveme5W1H ansehen - ein Tool, das die Phrasen extrahiert, die die journalistischen fünf W- und einen H -Fragen eines Artikels beantworten, um das Hauptereignis eines Artikels zu beschreiben, dh, wer was, wo, wo, warum und wie.
News-bitte extrahiert die folgenden Attribute aus Nachrichtenartikeln. Eine von News-Taille extrahierte Beispiele-JSON-Datei finden Sie hier.
News-bitte unterstützt drei Hauptanwendungsfälle, die im Folgenden ausführlicher erläutert werden.
python3 -m newsplease.examples.commoncrawl aus Es ist super einfach, wir versprechen!
News-bitte läuft auf Python 3.8+.
$ pip install news-pleaseSie können auf die Kernfunktionalität von News-bitte zugreifen, dh Extraktion von halbstrukturierten Informationen aus einem oder mehreren Nachrichtenartikeln in Ihrem eigenen Code, indem Sie im Bibliotheksmodus einen News-Deple-Modus verwenden. Wenn Sie die vollständige Website-Extraktion von News-Please (nur bei der Root-URL) oder den kontinuierlichen Crawling-Modus (mit RSS) verwenden möchten, müssen Sie den später beschriebenen CLI-Modus verwenden.
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 )Eine Stichprobe eines extrahierten Artikels finden Sie hier (als JSON -Datei).
Wenn Sie mehrere Artikel gleichzeitig kriechen möchten, optional mit einem optionalen Parameter, der von Anforderungen entnommen wurde.
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })oder wenn Sie eine Datei haben, die alle URLs enthält (jede Zeile mit einer einzelnen URL)
NewsPlease . from_file ( path )Oder wenn Sie RAW -HTML -Daten haben (Sie können auch die ursprüngliche URL bereitstellen, um die Genauigkeit des Extraktionsdatums zu erhöhen).
NewsPlease . from_html ( html , url = None )Oder wenn Sie eine WARC -Datei haben (schauen Sie sich auch unseren Commoncrawl -Workflow an, der bequeme Methoden bietet, um das Archiv von Commoncrawl für bestimmte Nachrichtenagenturen und Daten zu filtern).
NewsPlease . from_warc ( warc_record )Im Bibliotheksmodus wird in News-TPE versucht, Informationen aus jeder URL herunterzuladen und zu extrahieren. Die zuvor beschriebenen Funktionen blockieren, dh zurückkehren, sobald News-bitte alle URLs versucht hat. Die resultierende Liste enthält alle erfolgreich extrahierten Artikel.
Schließlich können Sie die extrahierten Informationen verarbeiten, die in den Artikelobjekten (en) enthalten sind. Um beispielsweise in ein JSON -Format zu exportieren, können Sie verwenden:
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-please News-Please beginnt dann auf ein paar Beispielseiten. Um den Prozess zu beenden, drücken Sie CTRL+C . Der Zeitungsgeweiß wird dann innerhalb von 5-60 Sekunden geschlossen. Sie können auch zweimal CTRL+C drücken, was den Vorgang sofort abtötet (jedoch nicht empfohlen).
Die Ergebnisse werden standardmäßig in JSON -Dateien im data gespeichert. In der Standardkonfiguration speichert News-bitte auch die ursprünglichen HTML-Dateien.
Höchstwahrscheinlich möchten Sie nicht von den in unserer Beispielkonfiguration bereitgestellten Websites kriechen. Gehen Sie einfach zur Datei sitelist.hjson und fügen Sie die Root -URLs der Webseiten der Nachrichtenverbände Ihrer Wahl hinzu. News-Please kann auch die neuesten Ereignisse aus dem GDELT-Projekt extrahieren, siehe hier.
News-bitte unterstützt auch den Export in Elasticsearch. Die Verwendung von Elasticsearch aktiviert auch die Versionsversionsfunktion. Aktivieren Sie es zunächst im Konfigurationsverzeichnis config.cfg , das standardmäßig ~/news-please/config ist, aber auch mit dem Parameter -c in einen benutzerdefinierten Speicherort geändert werden kann. Falls das Verzeichnis nicht vorhanden ist, wird am angegebenen Ort ein Standardverzeichnis erstellt.
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} Das war's! Außer wenn sich Ihre Elasticsearch-Datenbank nicht unter http://localhost:9200 befindet, verwendet ein anderes Benutzername/ein anderes Passwort oder eine CA-Zertifikatauthentifizierung. In diesen Fällen müssen Sie auch Folgendes ändern.
[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' In News-Please wird die Speicherung von Artikeln in eine PostgreSQL-Datenbank gespeichert, einschließlich der Versioning-Funktion. Öffnen Sie die entsprechende Konfigurationsdatei ( config_lib.cfg für den Bibliotheksmodus und config.cfg für den CLI -Modus) und fügen Sie das PostgreSQLStorage -Modul in die Pipeline und passen Sie die Datenbankanmeldeinformationen an:
[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' Wenn Sie vorhaben, News-Please und seinen Export nach PostgreSQL in einer Produktionsumgebung zu verwenden, empfehlen wir, das psycopg2-binary Binärpaket zu deinstallieren und psycopg2 zu installieren. Wir verwenden das erstere, da es keinen C -Compiler benötigt, um installiert zu werden. Weitere Informationen zu Unterschieden zwischen psycopg2 und psycopg2-binary und der Einrichtung einer Produktionsumgebung finden Sie unter.
Mit News-Please können Artikel in einer Redis-Datenbank gespeichert werden, einschließlich der Versioning-Funktion. Öffnen Sie zum Exportieren von Redis die entsprechende Konfigurationsdatei ( config_lib.cfg für den Bibliotheksmodus und config.cfg für den CLI -Modus) und fügen Sie das RedisStorage -Modul in die Pipeline hinzu und passen Sie die Verbindungsanmeldeinformationen an:
[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 = 24Diese Pipeline sollte auch mit AWS Elasticache und GCP MemoryStore kompatibel sein
Wir haben eine Reihe nützlicher Informationen für Benutzer und Entwickler gesammelt. Als Benutzer befassen Sie sich höchstwahrscheinlich nur mit zwei Dateien: sitelist.hjson (um die zu krabbenden Websites zu definieren) und config.cfg (wahrscheinlich nur selten, falls Sie die Konfiguration optimieren möchten).
Weitere Informationen zu Nutzung und Entwicklung finden Sie in unserem Wiki! Bevor Sie sich mit uns kontaktieren, schauen Sie sich bitte das Wiki an. Wenn Sie weiterhin Fragen zur Verwendung von News-bitte verwenden, erstellen Sie bitte eine neue Frage in Diskussionson hier unter GitHub. Bitte haben Sie Verständnis dafür, dass wir nicht in der Lage sind, individuelle Unterstützung per E -Mail anzubieten. Wir denken, dass Hilfe wertvoller ist, wenn sie öffentlich geteilt wird, damit mehr Menschen davon profitieren können. Wenn Sie jedoch aufgrund der Vertraulichkeit Ihres Projekts immer noch individuelle Unterstützung benötigen, können wir Ihnen möglicherweise eine private Beratung anbieten. Kontaktieren Sie uns für Informationen zu Preisgestaltung und weiteren Details.
Für Fehlerberichte bitten wir Sie, die Fehlerberichtsvorlage zu verwenden. Stellen Sie sicher, dass Sie die neueste Version von News-bitte verwenden, da wir ältere Versionen nicht unterstützen können. Wie bereits beschrieben, können wir keine Unterstützung für Probleme oder Fragen geben, die per E -Mail gesendet werden.
Ihre Spenden werden sehr geschätzt! Sie befreien uns, mehr an diesem Projekt zu arbeiten, um Aufgaben wie das Hinzufügen neuer Funktionen, den Support für Bug-Fix und die Beantwortung weiterer Bedenken in die Bibliothek zu übernehmen.
Dieses Projekt wäre ohne die Beiträge der folgenden Studenten (alphabetisch geordnet) nicht möglich gewesen:
Wir danken auch allen anderen Mitwirkenden, die Sie auf der Seite der Mitwirkenden finden!
Wenn Sie News-Tlease verwenden, zitieren Sie bitte unser Papier (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}
}
Weitere Informationen zu diesem und anderen Nachrichtenprojekten finden Sie auf unserer Website.
Möchten Sie einen Beitrag leisten? Großartig, wir freuen uns immer über Unterstützung für dieses Projekt! Wir suchen besonders nach Pull -Anfragen, die Fehler beheben. Wir begrüßen auch Pull -Anfragen, die Ihre eigenen Ideen beitragen.
Durch den Beitrag zu diesem Projekt stimmen Sie zu, dass Ihre Beiträge im Rahmen der Projektlizenz lizenziert werden.
Wir lieben Beiträge unserer Benutzer! Wenn Sie vorhaben, eine Pull -Anfrage einzureichen, öffnen Sie bitte zuerst ein Problem und dezieren Sie das Problem, das Sie beheben möchten oder was Sie verbessern möchten und wie! Auf diese Weise können wir diskutieren, ob Ihre Idee in erster Linie zu News-bitte hinzugefügt werden könnte und wie sie am besten implementiert werden könnte, um in Architektur- und Codierungsstil zu passen. Geben Sie in der Ausgabe an, dass Sie vorhaben, die beschriebenen Funktionen zu implementieren.
Leider haben wir keine Ressourcen, um Funktionen zu implementieren, die von Benutzern angefordert werden. Stattdessen empfehlen wir Ihnen, Funktionen zu implementieren, die Sie benötigen, und wenn Sie hier eine Pull -Anfrage öffnen möchten, damit die Community auch von Ihren Verbesserungen profitieren kann.
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen nur in Einklang mit der Lizenz einen News-TPE-Verschluss verwenden. Eine Kopie der Lizenz ist im Projekt enthalten, siehe Datei lizenz.txt.
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz. Das News-bitte-Logo ist mit freundlicher Genehmigung von Mario Hamborg.
Copyright 2016-2024 The News-Tape-Team