一、正文抽取地址html
https://github.com/buriy/python-readabilitypython
【安装】git
pip install readability-lxmlgithub
【测试】web
python -m readability.readability -ujson
http://www.douban.com/note/320982627/app
【PATH依赖】python2.7
export PYTHONPATH=/usr/local/lib/python2.7/site-packagestornado
必须是2.7的PYTHON,因此必须这么搞,还得看看怎么让PYTHON2.7和PYTHON3.3共存工具
=============================================================================
二、官方例子
from readability.readability import Documentimport urllibhtml = urllib.urlopen(url).read()readable_article =Document(html).summary()readable_title = Document(html).short_title()
==============================================================================
三、清理HTML
项目地址
https://github.com/aaronsw/html2text
【安装】
pip install html2text
【代码】
# -*- coding: utf-8 -*-import html2textprint html2text.html2text(u'<html><body><div><div class="note" id="link-report"><p>(1)网页去噪</p><p>网页去噪须要去掉与网页内表达内容不相关的文字,如广告,评论等等。如今对于博客、新闻类的网页去噪已经有不少的应用,好比经常使用的印象笔记、有道笔记就用到了相关的技术。</p><p>由于项目的须要,也须要对网页进行去噪,留下有用的内容。因此在网上找了相关的网页去噪的开源项目。</p><p>(2)参考连接</p><p>主要参考的连接是这篇“网页正文抽取工具”, 应该是抓取的新浪weibo上的相关的微博内容。里面介绍了给出了项目的地址,有Java、C++、C#、Perl、Python的。</p><p>由于项目是Python写的,因此初步选定使用 Decruft , Python readability , Python boilerpipe ,Pyhon Goose这几种。</p><p>(3)实践操做</p><p>Python readability的使用:</p><p>from readability.readability import Document</p><p>import urllib</p><p>html = urllib.urlopen(url).read()</p><p>readable_article = Document(html).summary()</p><p>readable_title = Document(html).short_title()</p><p>最后抽取出来的readable_article是带HTML标签的文本。还须要进行clean html操做。若是须要获得纯文本内容,还须要作其余工做</p><p>“decruft is a fork of python-readability to make it faster. It also has some logic corrections and improvements along the way.” (引自:</p><a rel="nofollow" href="http://www.minvolai.com/blog/decruft-arc90s-readability-in-python/" target="_blank">http://www.minvolai.com/blog/decruft-arc90s-readability-in-python/</a><p>)</p><p>decruft是Python readability的fork版本,其主要提升了readability的速度。decruft的源码是放在Goolge上的,发现他只有0.1版本,并且是10年9月的,可是Python-readability一直在更新的,其核心的readability.py是7个月前更新的,因此不能保证decruft的性能要比如今的readability好,我没有下载decruft进行试验,有兴趣能够本身试验一下。</p><p>Python-boilerpipe:是Boilerpipe的Python版本的Warpper,在使用的时候须要依赖jpype, chardet. 在构造Extractor的时候能够定制本身须要的抽取器,具体有:</p><p>DefaultExtractor</p><p>ArticleExtractor</p><p>ArticleSentencesExtractor</p><p>KeepEverythingExtractor</p><p>KeepEverythingWithMinKWordsExtractor</p><p>LargestContentExtractor</p><p>NumWordsRulesExtractor</p><p>CanolaExtractor</p><p>这个项目能够本身选择抽取出的正文内容格式:能够是纯文本的,也能够是携带HTML的。</p><p>Python-Goose:</p><p>通过试验,决定使用Goose,能够在这个网址上测试 </p><a rel="nofollow" href="http://jimplush.com/blog/goose" target="_blank">http://jimplush.com/blog/goose</a><p> Goose的抽取效果。Goose还可以得到Meta description。</p><p>Goose最后能够得到抽取后的纯文本。</p></div></div></body></html>')
==============================================================================
四、优化抓取
http://www.python-requests.org/en/latest/
【安装】
pip install requests
【使用】
import requests
r = requests.get(‘
https://github.com/timeline.json’)
还能够发起其它几种的req
>>> r = requests.put(”
>>> r = requests.delete(”
>>> r = requests.head(”
>>> r = requests.options(”
r.text
u'[{“repository”:{“open_issues”:0,”url”:”
【POST请求】
>>> payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
>>> r = requests.post(”
http://httpbin.org/post”, data=payload)
>>> print r.text
{
…
“form”: {
“key2”: “value2”,
“key1”: “value1”
},
…
}
==============================================================================
五、PYTHON3.3和PYTHON2.7的共存?
export PYTHONPATH=/usr/local/lib/python3.3/site-packages
==============================================================================
六、关键词提取
【项目地址】
https://github.com/isnowfy/snownlp
【安装】
pip install snownlp
【使用】
from snownlp import SnowNLP
text = u”’
天然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
它研究能实现人与计算机之间用天然语言进行有效通讯的各类理论和方法。
天然语言处理是一门融语言学、计算机科学、数学于一体的科学。
所以,这一领域的研究将涉及天然语言,即人们平常使用的语言,
因此它与语言学的研究有着密切的联系,但又有重要的区别。
天然语言处理并非通常地研究天然语言,
而在于研制能有效地实现天然语言通讯的计算机系统,
特别是其中的软件系统。于是它是计算机科学的一部分。
”’
s = SnowNLP(text)
s.keywords(3) # [u’语言’, u’天然’, u’计算机’]
==============================================================================
七、包装成HTTP服务
二、代码
# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
import json
import html2text
import requests
from readability.readability import Document
from snownlp import SnowNLP
class MainHandler(tornado.web.RequestHandler):
def get(self):
url = self.get_argument(‘url’)
html = requests.get(url).content
summary = Document(html).summary()
text = html2text.html2text(summary);
s = SnowNLP(text)
keywords = s.keywords(3)
self.write(json.dumps(keywords,ensure_ascii=False))
application = tornado.web.Application([
(r”/”, MainHandler),
])
if __name__ == “__main__”:
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
==================================
三、客户端测试用代码:
代开console
var xhr = new XMLHttpRequest();
var fd = new FormData();
fd.append(‘text’, “咱们都在不断赶路”);
xhr.open(‘POST’, ‘
http://localhost:8888′, true);
xhr.send(fd);
原文地址:https://www.douban.com/note/320990848/
转载请注明:方法SEO顾问 » 【Python】提取网页正文内容的相关模块与技术