新闻 - 请教是一个开源,易于使用的新闻视术,它几乎从任何新闻网站提取结构化信息。它可以递归地遵循内部超链接并读取RSS feed,以获取最新和旧的存档文章。您只需要提供新闻网站的根网址即可完全爬网。新闻合并结合了多个最先进的库和工具的力量,例如砂纸,报纸和可读性。
新闻求职还具有库模式,该模式允许Python开发人员在自己的程序中使用爬行和提取功能。此外,新闻 - 途径可以方便地从commoncrawl.org的(非常)大新闻档案中提取文章。
如果您想为新闻 - 请做出贡献,请先在此处阅读。
03/23/2021:如果您对新闻文章中的情感分类感兴趣,请查看我们的大规模数据集以进行目标依赖性情感分类。我们还发布了一种易于使用的神经模型,可实现最先进的性能。在这里访问该项目。
06/01/2018:如果您对从新闻提取事件感兴趣,您可能还想查看我们的新项目Giveme5w1h - 一种提取短语的工具,可以回答新闻学的五个W和一个H问题,以描述文章的主要事件,即谁在做什么,何时何地,何处,原因,以及以及如何以及如何做。
新闻 - 提取新闻文章中的以下属性。可以在此处找到由新闻please提取的示例JSON文件。
新闻 - 借助三个主要用例,在下文中更详细地进行了解释。
python3 -m newsplease.examples.commoncrawl 我们保证,这非常容易!
新闻 - please在Python 3.8+上运行。
$ pip install news-please您可以通过在图书馆模式下使用新闻 - 播放,从您自己的代码中访问新闻 - 结构化信息的核心功能,即从一个或多个新闻文章中提取半结构化信息。如果您想使用新闻杂志的完整网站提取(仅给定根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文件)。
如果您想一次抓取多个文章,请选择使用Request.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 Workflow,它提供了方便的方法来过滤CommonCrawl的档案,以适用于特定的新闻媒体和日期)
NewsPlease . from_warc ( warc_record )在图书馆模式下,新闻please将尝试从每个URL下载和提取信息。一旦新闻please尝试所有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 ,这将立即杀死该过程(不推荐使用)。
结果默认存储在data文件夹中的JSON文件中。在默认配置中,新闻 - 请存储原始的HTML文件。
您最有可能不想从我们示例配置中提供的网站上爬网。只需转到sitelist.hjson文件,然后添加您选择的新闻媒体网页的根网址即可。新闻求职还可以从GDELT项目中提取最新事件,请参见此处。
新闻求职还支持出口到Elasticsearch。使用Elasticsearch还将启用版本控制功能。首先,在配置目录的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'新闻合格允许将文章存储到PostgreSQL数据库中,包括版本控制功能。要导出到PostgreSQL,请打开相应的config File(for Library Mode和CLI模式的config_lib.cfg和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之间的差异以及如何设置生产环境的更多信息。
新闻合格允许将文章存储在REDIS数据库中,包括版本控制功能。要导出到REDIS,请打开相应的配置文件( config_lib.cfg for Library Mode config.cfg CLI模式),然后将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 MemoryStore兼容
我们为用户和开发人员收集了许多有用的信息。作为用户,您很可能只处理两个文件: sitelist.hjson (定义要爬行的站点)和config.cfg (如果您想调整配置,则很少只有很少的情况)。
您可以在Wiki中找到有关使用和开发的更多信息!在与我们联系之前,请查看Wiki。如果您仍然有关于如何使用新闻 - 兴趣的疑问,请在Github上的讨论中创建一个新问题。请了解,我们无法通过电子邮件提供个人支持。我们认为,如果公开共享帮助,则帮助更多的人可以从中受益。但是,如果您仍然需要个人支持,例如,由于您的项目机密性,我们也许可以为您提供私人咨询。请与我们联系以获取有关定价和更多详细信息的信息。
对于错误报告,我们要求您使用错误报告模板。确保您使用的是最新版本的新闻 - 振动,因为我们不能支持旧版本。如前所述,我们不能支持电子邮件发送的问题或问题。
非常感谢您的捐款!他们将释放我们更多地从事该项目,以执行诸如添加新功能,错误支持以及解决图书馆的其他问题之类的任务。
没有以下学生的贡献(按字母顺序排列),该项目是不可能的:
我们还感谢所有其他贡献者,您可以在贡献者页面上找到!
如果您正在使用新闻 - 请参考我们的论文(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}
}
您可以在我们网站上找到有关此和其他新闻项目的更多信息。
您想贡献吗?太好了,我们总是为此项目的任何支持感到高兴!我们特别正在寻找解决错误的拉动请求。我们还欢迎提出自己想法的拉力请求。
通过为该项目做出贡献,您同意您的捐款将根据项目许可获得许可。
我们喜欢用户的贡献!如果您打算提交拉动请求,请先开设一个问题,并在要解决的问题或要改进的问题以及如何解决问题上!这样,我们可以首先讨论是否可以将您的想法添加到新闻 - 如果是的话,最好如何实现它以适应架构和编码样式。在该问题中,请指出您打算实施所描述的功能。
不幸的是,我们没有资源来实现用户要求的功能。相反,我们建议您实现所需的功能,如果您想在此处打开拉动请求,以便社区也可以从您的改进中受益。
根据Apache许可证(版本2.0(“许可”)获得许可;除非符合许可,否则您不得使用新闻呼吁。该许可证的副本包含在项目中,请参见文件许可证。txt。
除非适用法律要求或以书面形式同意,否则根据许可证分配的软件是按照“原样”分发的,没有任何明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。新闻please徽标由马里奥·汉堡(Mario Hamborg)提供。
版权所有2016 - 2024年新闻合作团队