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,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:705933274
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 之眼
"""
# 解析文章
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
# ...
</