標籤:python 網頁 解析 html
第 0008 題:一個HTML檔案,找出裡面的本文。
思路:我把這裡的本文理解為網頁中我主要內容,那麼怎麼去抓取這個主要內容呢?我一開始的想法是用beautifulsoup來解析網頁,但是又想到如果要抽取本文的話這樣做還涉及到比較複雜的演算法,而且對於不同的網頁來說效果可能做不到很好。後來我發現了Python-goose(Github)這個神器,它是基於NLTK和Beautiful Soup的,分別是文本處理和HTML解析的領導者,目標是給定任意資訊文章或者任意文章類的網頁,不僅提取出文章的主體,同時提取出所有元資訊以及圖片等資訊,支援中文網頁(用到了結巴分詞)。這個正好符合需求,所以直接拿來用了。
安裝python goose:
- git clone https://github.com/grangier/python-goose.git
- cd python-goose
- pip install -r requirements.txt
- python setup.py install
0008.提取HTML本文內容.py
#!/usr/bin/env python#coding: utf-8from goose import Goosefrom goose.text import StopWordsChineseimport sysreload(sys)sys.setdefaultencoding("utf-8")# 要分析的網頁urlurl = ‘http://www.ruanyifeng.com/blog/2015/05/thunk.html‘def extract(url): ‘‘‘ 提取網頁本文 ‘‘‘ g = Goose({‘stopwords_class‘: StopWordsChinese}) article = g.extract(url=url) return article.cleaned_textif __name__ == ‘__main__‘: print extract(url)
拿阮一峰部落格上一篇文章測試,效果如下:
Python Show-Me-the-Code 第 0008 題 提取HTML本文內容