News-Plieseは、ほぼすべてのニュースWebサイトから構造化された情報を抽出する、使いやすいニュースクローラーであるオープンソースです。再帰的に内部ハイパーリンクに従い、RSSフィードを読み取り、最新および古いアーカイブされた記事の両方を取得できます。ニュースWebサイトのルートURLを提供するだけで、完全にクロールする必要があります。ニュース - Scrapy、新聞、読みやすさなど、複数の最先端のライブラリとツールの力を組み合わせてください。
News-Plieseは、Python開発者が独自のプログラム内でクロールおよび抽出機能を使用できるようにするライブラリモードも備えています。さらに、News-Newseは、CommonCrawl.orgの(非常に)大規模なニュースアーカイブから便利にクロールおよび抽出することができます。
ニュースを提供したい場合は、まずこちらをご覧ください。
03/23/2021:ニュース記事のセンチメント分類に興味がある場合は、ターゲット依存の感情分類のための大規模なデータセットをご覧ください。また、最新のパフォーマンスを実現する使いやすいニューラルモデルも公開しています。こちらのプロジェクトをご覧ください。
06/01/2018:ニュースからのイベントの抽出に興味がある場合は、新しいプロジェクトであるGiveme5W1Hをチェックしてみたいと思うかもしれません。これは、ジャーナリスティックな5 Wと1 Hの質問に答えるフレーズを抽出して、記事のメインイベントを説明するツール、つまり、いつ、どこで、なぜ、なぜ、なぜ、そしてどのようにしたか。
ニュースは、ニュース記事から次の属性を抽出します。ニュースごとに抽出された試験jsonファイルは、ここにあります。
News-Plieseは、3つの主要なユースケースをサポートしています。これについては、以下で詳しく説明しています。
python3 -m newsplease.examples.commoncrawlを実行しますとても簡単です、私たちは約束します!
News-Python 3.8+で実行されます。
$ pip install news-pleaseニュースのコア機能、つまり、ライブラリモードのニュースを使用して、1つ以上のニュース記事から半構造化された情報の抽出にアクセスできます。 News-fleaseの完全なWebサイト抽出(ルートURLのみが与えられます)または連続クロールモード(RSSを使用)を使用する場合は、後で説明するCLIモードを使用する必要があります。
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 )抽出された記事のサンプルは、ここ(JSONファイルとして)にあります。
一度に複数の記事をクローンしたい場合は、オプションでrequests.request()によって撮影されたオプションのパラメーターを使用して
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })または、すべてのURLを含むファイルがある場合(各行が単一のURLを含む)
NewsPlease . from_file ( path )または、生のHTMLデータがある場合(公開日を抽出する精度を高めるために元のURLを提供することもできます)
NewsPlease . from_html ( html , url = None )または、Warcファイルがある場合(CommonCrawlワークフローもチェックしてください。これは、特定のニュースアウトレットと日付のためにCommonCrawlのアーカイブをフィルタリングする便利な方法を提供します)
NewsPlease . from_warc ( warc_record )ライブラリモードでは、News-Fleseは各URLから情報をダウンロードして抽出しようとします。前述の関数はブロックされています。つまり、ニュースがすべてのURLを試みた場合に戻ります。結果のリストには、正常に抽出されたすべての記事が含まれています。
最後に、記事オブジェクトに含まれる抽出された情報を処理できます。たとえば、JSON形式にエクスポートするには、以下を使用できます。
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-pleaseその後、ニュースのおかげで、いくつかの例ページのクロールを開始します。プロセスを終了するにはCTRL+Cを押します。その後、ニュースのお客様は5〜60秒以内にシャットダウンします。 CTRL+C 2回押すこともできます。これにより、すぐにプロセスが殺されます(推奨されません)。
結果は、デフォルトでdataフォルダーのJSONファイルに保存されます。デフォルトの構成では、News-cliseは元のHTMLファイルも保存します。
おそらく、例の構成で提供されているWebサイトからクロールしたくないでしょう。 sitelist.hjsonファイルに移動し、お好みのニュースアウトレットのWebページのルートURLを追加してください。 News-Pleaseは、GDELTプロジェクトから最新のイベントを抽出することもできます。こちらをご覧ください。
News-Pleaseは、Elasticsearchへのエクスポートもサポートしています。 ElasticSearchを使用すると、バージョン機能も有効になります。まず、config.cfgでconfigディレクトリのconfig.cfgで有効にします。これはデフォルトで~/news-please/configですが、 -cパラメーターをカスタムロケーションに変更することもできます。ディレクトリが存在しない場合、指定された場所でデフォルトのディレクトリが作成されます。
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
}それでおしまい!ただし、ElasticSearchデータベースがhttp://localhost:9200にない場合は、別のユーザー名/パスワードまたはCA認証認証を使用します。これらの場合、以下を変更する必要があります。
[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' News-News-Bersion-ing機能を含むPostgreSQLデータベースに記事を保存することができます。 PostgreSQLにエクスポートするには、対応するconfigファイル(ライブラリモードのconfig_lib.cfg 、CLIモードのconfig.cfg )を開き、postgresqlstorageモジュールをパイプラインに追加し、データベースの資格情報を調整します。
[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'生産環境でニュースとそのエクスポートをPostgreSQLに使用することを計画している場合は、 psycopg2-binaryパッケージをアンインストールしてpsycopg2をインストールすることをお勧めします。インストールするためにCコンパイラを必要としないため、前者を使用します。 psycopg2とpsycopg2-binaryの違いと、生産環境のセットアップ方法の詳細については、こちらをご覧ください。
News-News-Bersions機能を含むRedisデータベースに記事を保存できます。 Redisにエクスポートするには、対応するconfigファイル(ライブラリモードの場合はconfig_lib.cfg 、CLIモードのconfig.cfg )を開き、Redisstorageモジュールをパイプラインに追加し、接続資格情報を調整します。
[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 = 24このパイプラインは、AWS ElasticacheおよびGCPメモリストアとも互換性があるはずです
ユーザーと開発者の両方に多くの有用な情報を収集しました。ユーザーとして、おそらく2つのファイルのみを扱うでしょう: sitelist.hjson (クロールするサイトを定義する)とconfig.cfg (構成を調整する場合は、おそらくめったにない)。
Wikiの使用と開発に関する詳細情報をご覧ください!私たちに連絡する前に、wikiをチェックしてください。ニュースの使用方法についてまだ質問がある場合は、GitHubでDiscusionsonで新しい質問を作成してください。電子メールで個別のサポートを提供できないことを理解してください。より多くの人々がそれから利益を得ることができるように、それが公に共有されている場合、私たちはその助けがより価値があると思います。ただし、たとえば、プロジェクトの機密性があるため、個別のサポートが必要な場合は、個人的な相談を提供できる場合があります。価格と詳細については、お問い合わせください。
バグレポートについては、バグレポートテンプレートを使用するようお願いします。古いバージョンのサポートを提供できないため、最新バージョンのニュースを使用していることを確認してください。前述のように、電子メールで送信された問題や質問をサポートすることはできません。
あなたの寄付は大歓迎です!彼らは、このプロジェクトにもっと取り組むために私たちを解放し、新しい機能の追加、バグフィックスのサポート、ライブラリに関するさらなる懸念に対処するなどのタスクを引き受けます。
このプロジェクトは、次の学生の貢献なしでは不可能でした(アルファベット順に注文)。
また、他のすべての貢献者に感謝します。これについては、貢献者ページで見つけることができます!
ニュースを使っている場合は、私たちの論文(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}
}
この情報やその他のニュースプロジェクトの詳細については、当社のWebサイトでご覧いただけます。
貢献したいですか?素晴らしい、私たちはこのプロジェクトのサポートにいつも満足しています!特に、バグを修正するプルリクエストを探しています。また、あなた自身のアイデアに貢献するプルリクエストも歓迎します。
このプロジェクトに貢献することにより、お客様はプロジェクトのライセンスに基づいて貢献がライセンスされることに同意します。
ユーザーによる貢献が大好きです!プルリクエストを送信する予定の場合は、最初に問題を開き、修正したい問題や改善したいものとその方法を説明してください!このようにして、最初にあなたのアイデアをニュースのために追加できるかどうか、そしてもしそうなら、アーキテクチャとコーディングスタイルに適合するためにどのように実装できるかを議論することができます。この問題では、説明された機能を実装する予定であると述べてください。
残念ながら、ユーザーが要求した機能を実装するリソースはありません。代わりに、必要な機能を実装することをお勧めします。コミュニティが改善からも利益を得られるように、ここでプルリクエストを開いてください。
Apacheライセンス、バージョン2.0(「ライセンス」)に基づいてライセンスされています。ライセンスに準拠している場合を除き、ニュースを使用することはできません。ライセンスのコピーはプロジェクトに含まれています。ファイルライセンスを参照してください。txtを参照してください。
適用法で要求されていないか、書面で合意されていない限り、ライセンスに基づいて配布されたソフトウェアは、明示または黙示のいずれかの保証または条件なしに、「現状のまま」に基づいて配布されます。ライセンスに基づく権限と制限を管理する特定の言語のライセンスを参照してください。ニュースのロゴは、マリオ・ハンバーグの好意によるものです。
Copyright 2016-2024 The News-Pleaseチーム