美文网首页
从网络和硬盘访问文本

从网络和硬盘访问文本

作者: 青椒rose炒饭 | 来源:发表于2019-06-28 15:18 被阅读0次

    电子书

    比较坑,原始版本的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流程

    相关文章

      网友评论

          本文标题:从网络和硬盘访问文本

          本文链接:https://www.haomeiwen.com/subject/wolscctx.html