携手创作,一起成长!这是我参加「日新方案 8 月更文应战」的第30天,点击查看活动概况
写在前面
原方案继续写一篇Portia的运用博客,成果在编写代码途中发现,在windows7的DockerToolbox里边运用Portia过错实在是太多了,主张大家仍是在Linux虚拟机或许直接在服务器上去运行。不然太耗费精力了~
今天咱们搬运一下,介绍一款newspaper
newspaper
github地址 : github.com/codelucas/n…
看名字应该能猜到和报纸/新闻有关系,这个库首要用于文章爬取和收拾,国内的一个大佬做的,当然他的github上也贴上了其他开发者的推荐
例如requests库的作者在推特上的推荐语
“Newspaper is an amazing python library for extracting & curating articles.”
The Changelog专门写了一篇评价文章,也能够围观一下
Newspaper delivers Instapaper style article extraction.
关于这样一款走出国门的爬虫库,咱们仍是很有必要介绍一下的
安装十分简单
pip install newspaper3k -i pypi.tuna.tsinghua.edu.cn/simple
官方文档能够查阅:newspaper.readthedocs.io/en/latest/u…
newspaper结构的运用
关于这款结构,运用起来难度是十分低的。简单对照这一页文档即可运用起来
例如:单条新闻内容获取
第一种运用方法,直接获取网页内容
from newspaper import Article
url = "https://36kr.com/p/857678806293124"
article = Article(url) # 创立文章目标
article.download() # 加载网页
article.parse() # 解析网页
print(article.html) # 打印html文档
当然还有一些其他特点,不过该结构都是根据关键字辨认的,有一些BUG存在,有时辨认禁绝
# print(article.html) # 打印html文档
print(article.text) # 新闻正文
print("-"*100)
print(article.title) # 新闻标题
print("-"*100)
print(article.authors) # 新闻作者
print("-"*100)
print(article.summary) # 新闻摘要
print(article.keywords) # 新闻关键词
# print(article.top_image) # 本文的top_image的URL
# print(article.images) # 本文中的一切图像url
newspaper文章缓存
默许情况下,newspaper缓存一切待提取的文章,假如文章被爬取过之后就会清除去它。此功能用于防止重复的文章和进步提取速度。能够运用memoize_articles
参数挑选是否缓存。
但当我运用下面这个办法进行提取的时分,奇特的BUG呈现了,怎么也得不到我想要的文章了。唉~看来结构完善之路仍是要继续啊
import newspaper
url = "https://news.sina.com.cn/c/2020-08-29/doc-iivhvpwy3651884.shtml"
# article = Article(url) # 创立文章目标
# article.download() # 加载网页
# article.parse() # 解析网页
news = newspaper.build(url, language='zh', memoize_articles=False)
article = news.articles[0]
article.download()
article.parse()
print('title=',article.title)
其他功能
在运用的过程中发现确实解析存在很大的问题,不过整体的结构规划思路仍是十分棒的。有点高开低走 ,看到github上的评语其实对newspaper是十分有等待的,运用之后,我主张仍是运用requests然后加上bs4自己搞搞愈加合理。
除了上面简单介绍到的功能,它还有一些扩展,例如下面这些
-
requests
和newspaper
合体解析网页正文,也便是用requests爬取,newspaper充任解析器 - 能够调用
Google Trends
信息 - 支撑多任务爬取
- 支撑NPL自然语言处理
- 乃至官方文档还给了一个
Easter Eggs
复活节彩蛋~,能够拉倒文档最下面查阅
唉~总归一言难尽啊
写在后面
本计划 Python 玩转NewSpaper爬虫结构,看来是玩不转了,扩展一下知识点也是极好的,当然github下载源码之后,好好研究一下大佬的编码规范,能学到很多。