0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Newspaper安装和使用教程

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-17 10:36 次阅读

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

它有以下的优点:

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

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

1.准备

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

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

此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip3 install newspaper3k

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

2.基本使用

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

from newspaper import Article

url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'

# 根据url生成Article对象
article = Article(url)

# 下载文章
article.download()

# 文章的HTML
article.html
#'< !DOCTYPE HTML >< html itemscope itemtype="http://...'

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

"""
Python 实用宝典
《Newspaper — 一个能下载38种语言新闻文章的 Python 模块》
"""

# 解析文章
article.parse()

# 获取文章作者
article.authors
# ['Leigh Ann Caldwell', 'John Honway']

# 获取文章发布日期
article.publish_date
# datetime.datetime(2013, 12, 30, 0, 0)

# 获取文章文本
article.text
# 'Washington (CNN) -- Not everyone subscribes to a New Year's resolution...'

# 获取顶部图像
article.top_image
# 'http://someCDN.com/blah/blah/blah/file.png'

# 获取文章多媒体资源
article.movies
# ['http://youtube.com/path/to/link.com', ...]

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

# 使用 NLP 解析
article.nlp()

# 获取文章关键词
article.keywords
# ['New Years', 'resolution', ...]

# 获取文章摘要
article.summary
# 'The study shows that 93% of people ...'

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

import newspaper

cnn_paper = newspaper.build('http://cnn.com')

for article in cnn_paper.articles:
    print(article.url)
# http://www.cnn.com/2013/11/27/justice/tucson-arizona-captive-girls/
# http://www.cnn.com/2013/12/11/us/texas-teen-dwi-wreck/index.html

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

for category in cnn_paper.category_urls():
    print(category)

# http://lifestyle.cnn.com
# http://cnn.com/world
# http://tech.cnn.com
# ...

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

import newspaper
sina_paper = newspaper.build('http://www.sina.com.cn/', language='zh')

for category in sina_paper.category_urls():
    print(category)
# http://health.sina.com.cn
# http://eladies.sina.com.cn
# http://english.sina.com
# ...

article = sina_paper.articles[0]
article.download()
article.parse()

print(article.text)
# 新浪武汉汽车综合 随着汽车市场的日趋成熟,
# 传统的"集全家之力抱得爱车归"的全额购车模式已然过时,
# 另一种轻松的新兴 车模式――金融购车正逐步成为时下消费者购
# 买爱车最为时尚的消费理念,他们认为,这种新颖的购车
# 模式既能在短期内
# ...

print(article.title)
# 两年双免0手续0利率 科鲁兹掀背金融轻松购_武汉车市_武汉汽
# 车网_新浪汽车_新浪网

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

"""
Python 实用宝典
《Newspaper — 一个能下载38种语言新闻文章的 Python 模块》
"""

from newspaper import Article
url = 'http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml'
a = Article(url, language='zh') # Chinese
a.download()
a.parse()
print(a.text[:150])

# 香港行政长官梁振英在各方压力下就其大宅的违章建
# 筑(僭建)问题到立法会接受质询,并向香港民众道歉。
# 梁振英在星期二(12月10日)的答问大会开始之际
# 在其演说中道歉,但强调他在违章建筑问题上没有隐瞒的
# 意图和动机。一些亲北京阵营议员欢迎梁振英道歉,
# 且认为应能获得香港民众接受,但这些议员也质问梁振英有

print(a.title)
# 港特首梁振英就住宅违建事件道歉

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

上滑查看更多语言

code            full namear              Arabicbe              Belarusianbg              Bulgarianda              Danishde              Germanel              Greeken              Englishes              Spanishet              Estonianfa              Persianfi              Finnishfr              Frenchhe              Hebrewhi              Hindihr              Croatianhu              Hungarianid              Indonesianit              Italianja              Japaneseko              Koreanlt              Lithuanianmk              Macedoniannb              Norwegian (Bokmål)nl              Dutchno              Norwegianpl              Polishpt              Portuguesero              Romanianru              Russiansl              Sloveniansr              Serbiansv              Swedishsw              Swahilith              Thaitr              Turkishuk              Ukrainianvi              Vietnamesezh              Chinese

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

3.高级玩法

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

"""
Python 实用宝典
《Newspaper — 一个能下载38种语言新闻文章的 Python 模块》
"""

import newspaper
from newspaper import news_pool

slate_paper = newspaper.build('http://slate.com')
tc_paper = newspaper.build('http://techcrunch.com')
espn_paper = newspaper.build('http://espn.com')

papers = [slate_paper, tc_paper, espn_paper]
news_pool.set(papers, threads_per_source=2) # (3*2) = 总计 6 线程
news_pool.join()

# 到这一步,你可以假定三个新闻源的文章都下载完成了
print(slate_paper.articles[10].html)
# u'< html > ...'

可以看到,作者通过 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 方法中,如:

import newspaper
from newspaper import Config, Article, Source

config = Config()
config.memoize_articles = False

cbs_paper = newspaper.build('http://cbs.com', config)

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多线程
    +关注

    关注

    0

    文章

    271

    浏览量

    19725
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30203
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
收藏 人收藏

    评论

    相关推荐

    openeuler安装教程三:openeuler安装步骤指导

    本章以光盘安装为例介绍安装openEuler,其他安装方式除在启动安装时的引导方式不同外,待启动安装后则
    的头像 发表于 12-06 16:53 1.3w次阅读
    openeuler<b class='flag-5'>安装</b>教程三:openeuler<b class='flag-5'>安装</b>步骤指导

    pads2005安装方法 安装说明 安装步骤

    pads2005安装方法 安装说明 安装步骤
    发表于 11-28 09:23 0次下载
    pads2005<b class='flag-5'>安装</b>方法 <b class='flag-5'>安装</b>说明 <b class='flag-5'>安装</b>步骤

    pads2007的安装方法 怎么安装 无法安装

    pads2007的安装方法 怎么安装  无法安装:图解说明,非常详细
    发表于 12-03 13:01 0次下载
    pads2007的<b class='flag-5'>安装</b>方法 怎么<b class='flag-5'>安装</b> 无法<b class='flag-5'>安装</b>

    轴承的安装

    轴承的安装 轴承的安装: 轴承的安装是否正确,影响着精度、寿命、性能。因此,设计及组装部门对于轴承的安装要充分研究。希望要按照作业标准进行安装
    发表于 05-14 08:10 824次阅读
    轴承的<b class='flag-5'>安装</b>

    新凯越安装教程

    新凯越安装教,使用方便,简洁,新凯越安装教程
    发表于 11-18 16:27 11次下载

    led吸顶灯如何安装安装教程)_led吸顶灯安装图解

    led灯饰越来越受大众喜欢,虽然led灯饰好看但是安装却是个大难题。那么它应该要如何安装呢?这篇文章主要就是介绍led吸顶灯的安装教程_led吸顶灯安装图解。
    发表于 12-22 14:00 31.6w次阅读

    液位变送器怎么安装_液位变送器安装过程

    本文分别介绍了投入式液位变送器安装过程与投入式液位变送器安装图解,投入式液位变送器使用与安装的注意事项与压力式液位变送器安装注意事项。
    发表于 02-05 08:56 2.5w次阅读
    液位变送器怎么<b class='flag-5'>安装</b>_液位变送器<b class='flag-5'>安装</b>过程

    RealViewMDK的安装概述和驱动安装

    本文的主要内容介绍的是RealViewMDK的安装概述和驱动安装
    发表于 05-09 09:15 16次下载

    OpenSSL安装使用:OpenSSL安装说明

    安装ActivePerl软件根据提示一步一步进行安装即可,安装过程软件会自动设置环境变量。要确认是否安装成功,我们可以利用cmd命令行的形式输入指令进入到
    的头像 发表于 11-11 14:11 1127次阅读

    openeuler安装教程二:openeuler安装方式介绍

    (HostOS为openEuler,虚拟化组件为发布包中的qemu、KVM)创建的虚拟化平台和华为公有云的x86虚拟化平台。 安装方式当前仅支持光盘、USB盘安装、网络安装、qcow2镜像安装
    的头像 发表于 12-06 16:48 3067次阅读
    openeuler<b class='flag-5'>安装</b>教程二:openeuler<b class='flag-5'>安装</b>方式介绍

    openeuler安装教程四:openeuler安装方法使用kickstart自动化安装

    使用kickstart自动化安装 使用kickstart自动化安装 总体介绍 概述 优缺点对比 背景知识 半自动化安装指导 环境要求 操作步骤 全自动化安装指导 环境要求 操作步骤 总
    的头像 发表于 12-06 17:22 5396次阅读
    openeuler<b class='flag-5'>安装</b>教程四:openeuler<b class='flag-5'>安装</b>方法使用kickstart自动化<b class='flag-5'>安装</b>

    安装Linux的系统安装工具

    安装_Linux的系统安装工具,可以安装各类Linux操作系统。通过iso镜像文件的格式安装。也可以安装在U盘上,本人亲测通过。  
    发表于 09-11 10:21 0次下载

    Newspaper开源模块的安装和使用教程

    Newspaper 是一个很棒的python库,用于提取和整理文章。 下面是这个开源模块的安装和使用教程。 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问
    的头像 发表于 10-16 11:22 293次阅读

    Newspaper:用于提取和整理文章的python库

    Newspaper 是一个很棒的python库,用于提取和整理文章。 它有以下的优点: 多线程文章下载框架 识别新闻网址 从html提取文本 从html提取顶部图像 从html提取所有图像 从文本
    的头像 发表于 10-30 14:24 297次阅读

    Newspaper:能下载38种语言新闻文章的 Python 模块

    Newspaper 是一个很棒的python库,用于提取和整理文章。 它有以下的优点: 多线程文章下载框架 识别新闻网址 从html提取文本 从html提取顶部图像 从html提取所有图像 从文本
    的头像 发表于 10-31 11:09 203次阅读