如何使用PYTHON抓取新闻文章
在本文中,我们将讨论如何使用Python抓取新闻报道。这可以使用方便的报纸包装来完成。
Python newspaper 包简介
可以使用pip安装newspaper 包:
pip install newspaper
安装完成后,即可开始。 newspaper可以通过从给定的URL上抓取一篇文章,或者通过找到网页上其他新闻的链接来工作。让我们从处理一篇文章开始。首先,我们需要导入Article类。接下来,我们使用此类将内容从URL下载到我们的新闻文章。然后,我们使用parse方法解析HTML。最后,我们可以使用.text打印文章的文本。
爬一篇文章
from newspaper import Article
url = "https://www.bloomberg.com/news/articles/2020-08-01/apple-buys-startup-to-turn-iphones-into-payment-terminals?srnd=premium"
# download and parse article
article = Article(url)
article.download()
article.parse()
# print article text
print(article.text)
还可以获取有关文章的其他信息,例如指向帖子中嵌入的图像或视频的链接。
# get list of image links
article.images
# get list of videos - empty in this case
article.movies
下载网页上链接的所有文章
现在,让我们看看如何将所有新闻文章链接到网页上。我们将使用如下的news.build方法来实现。然后,我们可以使用article_urls方法提取文章URL 。
import newspaper
site = newspaper.build("https://news.ycombinator.com/")
# get list of article URLs
site.article_urls()
使用上面的对象,我们还可以获得每个文章的内容。这里,所有article对象都存储在list.site.articles中。例如,让我们获取第一篇文章的内容。
site_article = site.articles[0]
site_article.download()
site_article.parse()
print(site_article.text)
现在,让我们修改代码以获得前十名文章:
top_articles = []
for index in range(10):
article = site.articles[index]
article.download()
article.parse()
top_articles.append(article)
警告!
使用时,一个重要的说明newspaper的是,如果你运行newspaper.build用相同的URL多次, 包将缓存,然后删除已经刮了文章。例如,在下面的代码中,我们连续两次运行Newspaper.build并获得不同的结果。第二次运行它时,代码仅返回新添加的链接。
site = newspaper.build("https://news.ycombinator.com/")
print(len(site.articles))
site = newspaper.build("https://news.ycombinator.com/")
print(len(site.articles))
可以通过在函数调用中添加一个额外的参数来进行调整,如下所示:
site = newspaper.build("https://news.ycombinator.com/", memoize_articles=False)
如何获得文章摘要
该newspaper包也支持一些NLP功能。您可以通过调用nlp方法进行检查。
article = top_articles[3]
article.nlp()
现在,让我们使用summary方法。这将尝试返回文章摘要。
article.summary()
您还可以从文章中获取关键字列表。
article.keywords
如何获得最热门的Google关键字
报纸还有其他一些很酷的功能。例如,我们可以使用hot方法轻松使用它在Google上吸引最热门的搜索。
newspaper.hot()
该软件包还可以返回受欢迎的URL列表,如下所示。
newspaper.popular_urls()
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 信号量--System V信号量 与 Posix信号量
- 文件空间映射mmap()函数(是什么,为什么,怎么用)
- C++下shm共享内存模块
- 基于TypeScript封装Axios笔记(九)
- springmvc之SessionAttributes注解所引发的异常
- 【tensorflow2.0】处理文本数据-imdb数据
- springmvc之异常处理DefaultHandlerExceptionResolver
- springmvc之返回json类型的数据给前端
- springmvc之mvc:view-controller标签设置可以直接访问的视图
- exec族
- springmvc实例之添加雇员相关信息(二)
- Qt引入第三方库(亲测Qt4和Qt5)
- springmvc之与spring进行整合
- recv&send函数
- setsockopt与getsockopt