我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文中,苏南大叔描述的是:python如何免正则表达式分析出文章正文。当然,这篇文字如果非要往高大上说的话,就可以扯上ai之类的高大上名词。反正,宗旨就是这样的:不写正则表达式,仅使用python现有的第三方模块,就分析出页面的主要元素,比如:正文。具体的原理,苏南大叔就不复述了,直接上干货。

苏南大叔:python 正文抽取试验:readability、newspaper - python正文抽取
python 正文抽取试验:readability、newspaper(图3-1)

本文文章的内容,其实准备了很久。选题和素材虽然很多,但是没有一个特别符合苏南大叔的想法的,效果上来说也都不是太好。试验的过程中,选取了python-readabilitynewspapernewspaper3k等等非常知名的库。但是似乎希望越大,失望也越大。在苏南大叔的测试中,这些知名的python库,表现并不是很好。

测试环境是:mac下的python3.7.0python2.7.0
相关类库有:readability-lxml 0.7newspaper 0.0.9newspaper3k 0.2.8

python-readability

python-readabilitygithub地址是:

安装方式:

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()

苏南大叔:python 正文抽取试验:readability、newspaper - readability
python 正文抽取试验:readability、newspaper(图3-2)

测试结果:不好用,拿到的正文部分,明显有问题。而且还有乱码问题。所以,不建议使用。

newspapernewspaper3k

newspapernewspaper3k,其实是一个库,只不过在python2python3下的不同版本罢了。

而截至到发稿时,这个事情又有了翻转,那就是newspaper已经是python3的库。而python2下面的库,需要指定旧版本安装。

相关的地址是:

安装方式:

sudo pip2 install newspaper --ignore-installed --upgrade 
sudo pip2 install newspaper==0.09
sudo pip3 install newspaper3k --ignore-installed --upgrade 

安装这个newspaper的过程,可能会有些波折。这里,苏南大叔默认为:读者朋友已经安装好了python2python3下面的newspaper库。本次实验中,python2下面的newspaper版本为0.0.9python3下面的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)

苏南大叔:python 正文抽取试验:readability、newspaper - newspaper-img
python 正文抽取试验:readability、newspaper(图3-3)

结论:从a.text角度上看,正文匹配比较准确。但是,苏南大叔希望的html却不存在。如果取a.html的话,返回值确是整个html结构,而不是正文的。图片匹配出来了,但是视频却没有匹配出来。不过,结果也算ok。可以算个备选答案。

jparser

其实,在本文的草稿中,这个位置还有个jparser-0.0.20的试验。在初次试验过程中,效果还是很不错的。和newspaper对比的话,保留了图片在正文中的位置。但是在文章后期补充图片素材的时候,不知道发生了什么兼容问题,却不能正常运行了。所以,暂时放弃吧。jparser官方版本可以在python2下运行,在其issue里面,有关于python3的兼容代码。

总结

python的功能,看起来都是非常高大上的。更多python经验文字,请点击苏南大叔的博客文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python