python 正文抽取试验:readability、newspaper
发布于 作者:苏南大叔 来源:程序如此灵动~本文中,苏南大叔描述的是:python
如何免正则表达式分析出文章正文。当然,这篇文字如果非要往高大上说的话,就可以扯上ai
之类的高大上名词。反正,宗旨就是这样的:不写正则表达式,仅使用python
现有的第三方模块,就分析出页面的主要元素,比如:正文。具体的原理,苏南大叔就不复述了,直接上干货。
本文文章的内容,其实准备了很久。选题和素材虽然很多,但是没有一个特别符合苏南大叔的想法的,效果上来说也都不是太好。试验的过程中,选取了python-readability
、newspaper
、newspaper3k
等等非常知名的库。但是似乎希望越大,失望也越大。在苏南大叔的测试中,这些知名的python
库,表现并不是很好。
测试环境是:mac
下的python3.7.0
和 python2.7.0
。
相关类库有:readability-lxml 0.7
、newspaper 0.0.9
、newspaper3k 0.2.8
。
python-readability
python-readability
的github
地址是:
安装方式:
pip install requests
pip install readability-lxml
截至到发稿,readability-lxml
版本为0.7
。
使用方式:
import requests
from readability import Document
response = requests.get('https://news.163.com/18/1123/13/E1A4T8F40001899O.html')
doc = Document(response.text)
print doc.title()
print doc.content()
测试结果:不好用,拿到的正文部分,明显有问题。而且还有乱码问题。所以,不建议使用。
newspaper
与 newspaper3k
newspaper
与 newspaper3k
,其实是一个库,只不过在python2
和python3
下的不同版本罢了。
而截至到发稿时,这个事情又有了翻转,那就是newspaper
已经是python3
的库。而python2
下面的库,需要指定旧版本安装。
相关的地址是:
- https://github.com/codelucas/newspaper
- https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html
安装方式:
sudo pip2 install newspaper --ignore-installed --upgrade
sudo pip2 install newspaper==0.09
sudo pip3 install newspaper3k --ignore-installed --upgrade
安装这个newspaper
的过程,可能会有些波折。这里,苏南大叔默认为:读者朋友已经安装好了python2
和python3
下面的newspaper
库。本次实验中,python2
下面的newspaper
版本为0.0.9
,python3
下面的newspaper3k
版本为0.2.8
。
试验代码(python3
):
import newspaper
url = 'https://news.163.com/18/1123/13/E1A4T8F40001899O.html'
a = newspaper.Article(url,language='zh')
a.download()
a.parse()
print(a.title)
print(a.top_image)
print(a.movies)
print(a.text)
print(a.html)
结论:从a.text
角度上看,正文匹配比较准确。但是,苏南大叔希望的html
却不存在。如果取a.html
的话,返回值确是整个html
结构,而不是正文的。图片匹配出来了,但是视频却没有匹配出来。不过,结果也算ok。可以算个备选答案。
jparser
其实,在本文的草稿中,这个位置还有个jparser-0.0.20
的试验。在初次试验过程中,效果还是很不错的。和newspaper
对比的话,保留了图片在正文中的位置。但是在文章后期补充图片素材的时候,不知道发生了什么兼容问题,却不能正常运行了。所以,暂时放弃吧。jparser
官方版本可以在python2
下运行,在其issue
里面,有关于python3
的兼容代码。
总结
python
的功能,看起来都是非常高大上的。更多python
经验文字,请点击苏南大叔的博客文章。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。