Newspaper 是一个很棒的python库,用于提取和整理文章。

它有以下的优点:

  • 多线程文章下载框架
  • 识别新闻网址
  • 从html提取文本
  • 从html提取顶部图像
  • 从html提取所有图像
  • 从文本中提取关键字
  • 自动提取摘要
  • 自动提取作者
  • 自动提取 Google 趋势词

下面是这个开源模块的安装和使用教程。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目:Python 编程的最好搭档—VSCode 详细指南

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:

遇到任何安装问题,可以在本文下方留言框或Python实用宝典公众号上留言,也可以访问项目官网查看相关安装指南:
https://github.com/codelucas/newspaper

2.基本使用

Newspaper 中是以文章为对象实现各种操作的,比如下载指定新闻的HTML:

通过解析新闻和文章,你能获得此文章的作者、发布时间、摘要、顶部图像、所有图像、多媒体等:

除此之外,该模块还附带了 NLP 功能,你能用它来识别文章关键字并自动提取摘要:

你看,这个工具不无敌吗?它还能提取某个网站的所有新闻文章,比如我想提取CNN的新闻文章:

在此之上,你还能拿到CNN的其他新闻门户分类:

许多中文媒体的文章下载也是支持的:

从上面的例子你可以看到,你可以非常容易地提取中文文章,仅需要在Article的language参数中指定 ‘zh’ :

这个工具所支持的所有语言如下:

input code      full name

  ar              Arabic
  be              Belarusian
  bg              Bulgarian
  da              Danish
  de              German
  el              Greek
  en              English
  es              Spanish
  et              Estonian
  fa              Persian
  fi              Finnish
  fr              French
  he              Hebrew
  hi              Hindi
  hr              Croatian
  hu              Hungarian
  id              Indonesian
  it              Italian
  ja              Japanese
  ko              Korean
  lt              Lithuanian
  mk              Macedonian
  nb              Norwegian (Bokmål)
  nl              Dutch
  no              Norwegian
  pl              Polish
  pt              Portuguese
  ro              Romanian
  ru              Russian
  sl              Slovenian
  sr              Serbian
  sv              Swedish
  sw              Swahili
  th              Thai
  tr              Turkish
  uk              Ukrainian
  vi              Vietnamese
  zh              Chinese

你可以按需选择自己所需要的语言。

3.高级玩法

前面我们说过,Newspaper 是一个可以并发下载文章的框架,它是这么玩的:

可以看到,作者通过 build 三个新闻源,拿到一个总的新闻源池进行并发请求。

其中,.set 函数起到了调度作用,它能通过指定 threads_per_source 的值设定每个新闻源的线程。最后再 join 起来开始并发请求新闻源并开始下载新闻。

此外,Newspaper 还有一些参数可供你配置,比如:

keep_article_html,默认为False,“如果要保留正文文本的html,则设置为True”

http_success_only,默认为True,“设置为False也可以捕获非2XX响应”

MIN_WORD_COUNT,默认为300,“文章中的单词数量”

MIN_SENT_COUNT,默认为7,“句子数”

MAX_TITLE,默认值为200,“文章标题中的字符数”

MAX_TEXT,默认值为100000,“文章文字中的字符数”

MAX_KEYWORDS,默认值为35,“文章中的关键词数”

MAX_AUTHORS,默认值为10,“文章中的作者姓名数量”

MAX_SUMMARY,默认值为5000,“摘要的字符数”

MAX_SUMMARY_SENT,默认为5,“摘要中的句子数”

memoize_articles,默认为True,“运行后缓存并保存运行后的文章”

fetch_images,默认为True,“如果不需要获取图片,请将其设置为false”

request_timeout,默认为7,请求7秒后未响应完成则超时

number_threads,默认值为10,多线程数量

如果你需要使用以上参数,可以设一个Config对象,传入指定的 Article 对象或build 方法中,如:

非常简单易懂,而且设置起来的维护成本不算很高。

在做一些舆情分析或者NLP算法训练/测试的时候,这个模块简直就是你的福音。你可以很方便地从网站上提取任意语言的文本数据,拿来测试或者训练都可以。

对于那些想要搞舆情分析,寻找市场热点的同学而言,这个模块也是非常方便,你能搭配邮件发布工具,并使用Newspaper的关键词提取功能,迅速制作一个关键词热点实时告警的工具。

总而言之,这是一个非常值得了解并学习使用的第三方模块,强烈推荐。

我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!


​Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典

Pandas 性能优化
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。