电子书
比较坑,原始版本的urllib之下直接就有urlopen,但是我的是新版本找不到,需要使用urllib.request才有urlopen,然后就是例子中古藤语料库的2554这篇文章没有,即使是使用浏览器访问也是会出404错误的,最后自己整了一个网络的文本。
from urllib.request import urlopen
url = "http://www.gutenberg.org/cache/epub/420/pg420.txt"
raw = urlopen(url).read()
print(type(raw))
处理html
正常情况如果不是网站限制爬虫,以及url写错都是能访问的,我测试的时候就遇到了返回的内容输出是一些编码。竟然没有给我显示为字符,直接给我显示编码,你说气不气?在read()后面加上decode(‘utf-8’)能解决问题
按照书上的程序,会出现一个错误。
from urllib.request import urlopen
import nltk
from bs4 import BeautifulSoup
import gzip
url = "http://english.kmust.edu.cn/html/NewsfhfhfhEvents/2019/05/31/c9164096-7d86-4cd1-89ad-b58967ec7ef7.html"
html= urlopen(url).read().decode('utf-8')
data = nltk.clean_html(html)
print(data)
NotImplementedError: To remove HTML markup, use BeautifulSoup's get_text() function
遇到错误的时候看一眼就能解决了比百度快一丢丢。错误内容“没有实现错误:想去除html标签,用BeautifulSoup的get_text()方法”。所以代码需要修改成下面这样子:
from urllib.request import urlopen
import nltk
from bs4 import BeautifulSoup
import gzip
url = "http://english.kmust.edu.cn/html/NewsfhfhfhEvents/2019/05/31/c9164096-7d86-4cd1-89ad-b58967ec7ef7.html"
html= urlopen(url).read().decode('utf-8')
data = BeautifulSoup(html).getText()#修改
print(data)
下面的程序是对html的文本进行处理,去除网页中一些无关的内容,获取含有指定单词的句子。
from urllib.request import urlopen
import nltk
from bs4 import BeautifulSoup
import gzip
url = "https://www.crummy.com"
html= urlopen(url).read().decode('utf-8')
data = BeautifulSoup(html).getText()
tokens = nltk.tokenize.word_tokenize(data)
#去除一些无关内容,网站导航等
text = nltk.Text(tokens)
#这个貌似没有什么用
print(text)
#找文本中和具有is的句子
text = text.concordance('is')
print(text)
其中使用的concordance()并不是字符串的方法。是nltk.Text的方法,参数必须是切分后的字符串不否则是会查找失败的。
查找结果
读取文件
其中的document.txt是我在pycharm里面新建的,读取的时候注意处理乱码问题。
import nltk
#读取文件,指定编码为utf-8避免出现编码错误导致文件打不开
f = open("document.txt",encoding="utf-8")
#输出文件内容
print(f.read())
#约定读取到换行就结束,逐行读取
print("------------------------------------------------------------------")
f = open("document.txt","rU",encoding="utf-8")
for line in f:
print(line)
print("-------------------------------------------------------------------")
print(nltk.corpus.gutenberg.fileids())
#获取文本austen-emma所在的文件夹,有了文件路径就能使用open函数打开了
path = nltk.data.find('corpora/gutenberg/austen-emma.txt')
print(path)
捕获用户的输入
input(“提示文本”)
NLP的流程
感觉也没啥说的,哈哈
NLP流程
网友评论