創建一個新網站,一開始沒有內容,通常需要抓取其他人的網頁內容,一般的操作步驟如下:
根據url下載網頁內容,針對每個網頁的html結構特征,利用正則表達式,或者其他的方式,做文本解析,提取出想要的正文。
為每個網頁寫特征分析這個還是太耗費開發的時間,我的思路是這樣的。
Python的BeautifulSoup包大家都知道吧,
import BeautifulSoup soup = BeautifulSoup.BeautifulSoup(html)
利用這個包先把html里script,style給清理了:
[script.extract() for script in soup.findAll('script')] [style.extract() for style in soup.findAll('style')]
清理完成后,這個包有一個prettify()函數,把代碼格式給搞的標准一些:
soup.prettify()
然后用正則表達式,把所有的HTML標簽全部清理了:
reg1 = re.compile("<[^>]*>") content = reg1.sub('',soup.prettify())
剩下的都是純文本的文件了,通常是一行行的,把空白行給排除了,這樣就會知道總計有多少行,每行的字符數有多少,我用excel搞了一些每行字符數的統計,如下圖:
x坐標為行數,y坐標為該行的字符數
很明顯,會有一個峰值,81~91行就應該是這個網頁的正文部分。我只需要提取81~91行的文字就行了。
問題來了,照着這個思路,有什么好的算法能夠通過數據分析的方式統計出長文本的峰值在哪幾行?
附帶一個開源的提取文本的python包,https://github.com/xgdlm/python-goose