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

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

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

前提描述

本文文章的内容,其实准备了很久。选题和素材虽然很多,但是没有一个特别符合苏南大叔的想法的,效果上来说也都不是太好。

试验的过程中,选取了python-readabilitynewspapernewspaper3k等等非常知名的库。但是似乎希望越大,失望也越大。在苏南大叔的测试中,这些知名的python库,表现并不是很好。

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经验文字,请点击苏南大叔的博客文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章: