【NLTK基础教程】01-1 三种获取网页中有效文本的方法

本篇是《NLTK基础教程》第一章的第三节,向NLTK迈进中的一个例子,获取网页中的文本的三种方法。

1 抓取网页

这里主要是用了urllib库中的函数来抓取指定网页,代码如下:

1
2
3
4
import urllib.request
response=urllib.request.urlopen('http://python.org')
html=response.read()
print(len(html))

由于python版本的关系,哈哈,这里有个坑,那我就指出来吧!以后如果有坑的地方,我还是先踩下!嘿嘿。

==【踩坑专业专用标记】==
(1)如果你的python版本是2.x,那么你的前两句代码应该如下:

1
2
import urllib2
response=urllib2.urlopen('http://python.org')

(2)如果你的python版本是3.x,那么就使用最上面的代码就可以了,即:

1
2
import urllib.request
response=urllib.request.urlopen('http://python.org')

2 获取网页中的文本

好吧,前期抓取网页的准备工作完成了,那么接下来获取网页中的有效文本(也就是想办法去掉html标签和多余的字符),教材中简单的讲了三种方法,我感觉挺有用的,也会经常用到,于是就记录下来了。
(1)方法一:要清理掉html标签,一种可行的做法是只选取其中的标记,包括数字和字符,然后替换掉就可以了。

1
2
3
tokens=[tok for tok in html.split()]
print("total no of tokens :"+str(len(tokens)))
print(tokens[0:100])

当然匹配这些无用字符还有更简洁的版本,也就是通过正则表达式来实现,见方法二。
(2)方法二:利用正则表达是来匹配无用字符。

1
2
3
4
import re
tokens=re.split("\w+",html)
print(len(tokens))
print(tokens[0:100])

以上两种方法都是从方面来获取有效文本。
(3)方法三;通过ntlk来获取网页中有效文本。
还是直接上代码吧,简单粗暴😏。

1
2
3
4
5
6
import nltk
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
text = soup.get_text()
tokens=[tok for tok in text.split()]
print(tokens[0:100])

好吧,这里也有个坑,也就是nltk中的clean_html()方法不可用了,需要用BeautifulSoup的 get_text()方法。

==【踩坑专业专用标记】==
因此教材上的代码:

1
clean=nltk.clean_html(html)

应该改为:

1
2
3
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
text = soup.get_text()

好吧,到这里,这三种方法就介绍完了,如果有什么问题,欢迎留言。