一、文本长度分析
1、HTML中的换行
在HTML源码中,所有的换行都是依赖行级元素、块级元素以及<br>来实现的。
一般大量使用<p>标签来封装正文。
2、去除JavaScript及CSS
利用lxml的clean类,能删除HTML里所包含CSS及script
>>> from lxml.html import clean
>>> cleaner = clean.Cleaner(style=True, scripts=True, comments=True, javascript=True, page_structure=False, safe_attrs_only=False)
>>> content = cleaner.clean_html(content.decode('utf-8')).encode('utf-8')
style = True 去掉CSS
scripts = True 去掉js,插件等
comments = True 去掉注释
JavaScript = True 去掉js
3.去除所有HTML tag
利用下面的正则表达式,把HTML的tag和属性都去掉,最后只剩下正文部分:
reg = re.compile("<[^>]*>")
content = reg.sub('', content)
f = open('cleaned.txt', 'wb+')
f.write(content)
f.close()
如:
4、基于文本长度的分析方法
由上面可以得到每一行只有文本的文件,便可以统计每一行的字符长度。一般的,正文行的字符长度都比较大,而且比较集中,如下:
获取网页代码:
HtmlRetrival.py
import gzip
import re
import urllib.request
from io import StringIO
class HtmlRetrival:
dir_name = 'files'
def __init__(self, url):
self.url = url
def get_content(self):
request_headers = {
'connection': "keep-alive",
'cache-control': "no-cache",
'upgrade-insecure-requests': "1",
'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36",
'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
'accept-language': "zh-CN,en-US;q=0.8,en;q=0.6",
'accept-charset ': 'utf-8'
}
filename = self.dir_name + '/' + re.findall('/([^/]+)$', self.url)[0]
try:
f = open(filename, 'r+',encoding='utf8')
content =