>>> from bs4 import BeautifulSoup
#导入
BeautifulSoup模块
知识点:
该模块的库文件夹名称是bs4,安装完后被移入python3的lib库中,所以识别到的库文件就是bs4
>>> import urllib.request
#导入urllib模块中的request
知识点:导入
导入=某个模块可用于当前命名空间和当前python解释程序进程
有两种方法,import, from import 。from import可能会造成命名空间冲突,import不会造成命名空间冲突
from Module import other
#
直接导入模块中某
类、函数或变量,直接other()就可用
from
Module import *
#导入Module模块中所有'公开'的内容,内容直接可用
import Module
#导入
Module
模块,
对于模块中的函数,每次调用需要“模块.函数”来用
import Module.other
#导入Module模块中的某类,函数或变量
>>> response =urllib.request.urlopen(' http://php.net/')
#
使用
urllib模块
的
request类
的
urlopen函数
来抓 取web页面php.net
>>> html=response.read()
#
结果包含许多需要清理的HTML标签
知识点:read()方法
read方法可以指定一个参数读取多少,如果不指定的话,会一直读取到文件末尾,也就是一次性读取完。如果再次调用read方法,则什么也读取不到,因为文件指针已经移动到了文件末,没有内容。
>>> soup = BeautifulSoup(html,"html5lib")
#
BeautifulSoup模块来清洗这样的文字
知识点:Beautiful Soup4
Beautiful Soup
是一个可以从
HTML
或
XML
文件中提取数据的
Python
库;
不仅支持
HTML
解析器,还支持一些第三方的解析器,如,
lxml,XML,html5lib
但是需要安装相应的库;
- 参数1:指出要解析的文档是什么类型,目前支持, html, xml, 和 html5
- 参数2:指定使用哪种解析器: 目前支持, lxml, html5lib, 和 html.parser
>>> text=soup.get_text(strip=True)
#
从抓取的网页中得到了一个干净的文本
知识点:get_text()
这个方法获取到包含的所有文版内容,strip=True可除去文本前后的空白,并将结果作为 Unicode 字符串返回。
>>> tokens = [t for t in text.split()]
#
将文本转换为tokens
知识点:[] 和 split()
[ ]是数据类型-列表
split() 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\t)等。
>>>freq = nltk.FreqDist(tokens)
#词频统计
知识点:
FreqDist
nltk库中的函数,接收list后,自动创建字典dict,key是list的元素,value是元素出现的次数
>>> for key,val in freq.items():
#打印key+:+val
... print(str(key)+':'+str(val))
知识点:for循环
通过for来循环来遍历这个dict的key和value
>>> freq.plot(20,cumulative=False)
#绘图
知识点:
matplotlib库 的函数plot()可绘图,20代表x轴绘制的单词个数,cumulative=False表示非累积分布函数
>>> from nltk.corpus import stopwords
#导入语料库中的停用词stopwords
>>> clean_tokens = list()
#创建一个空list,存放清洗后的数据
>>> sr = stopwords.words('english')
#创建英文停用词列表
>>> for token in tokens:
... if token not in sr:
#剔除停用词
... clean_tokens.append(token)
>>>freq = nltk.FreqDist(clean_tokens)
#词频统计
>>> freq.plot(20,cumulative=False)
#重新绘图