zoukankan      html  css  js  c++  java
  • 用HTMLParser解析html时报错:No module named 'htmlentitydefs'

    python3.6用HTMLParser解析html时报错
    No module named 'htmlentitydefs'或No module named 'markupbase'

    先上代码

    from HTMLParser import HTMLParser
    import urllib.request
    
    class myhtml(HTMLParser):
        def __init__(self):
            HTMLParser.__init__(self)
            self.flag = 0
            self.links = []
    
        def handle_starttag(self,tag,attrs):
            if tag == "a":
                for name,value in attrs:
                    if name == "href":
                        self.links.append(name)
    
    if  __name__ == "__main__":
        parser = myhtml()
        myurl = "https://www.cnblogs.com/pinpin"
        html = urllib.request.urlopen(myurl)
        html_connect =html.read()
        html_connect = bytes.decode(html_connect)
        parser.feed(html_connect)
        print(parser.links)
    

    错误如下:

    TypeError: No module named 'htmlentitydefs'

    简单来说 就是一个导包错误,没有就下载导入一个呗~~~,但是这个库安装不了,所以继续找了

    百度结论:'htmlentitydefs'应该是在python3以后弃用了

    那怎么办,最后通过努力,找到了个很简单的方法

    灵感来自:

    http://stackoverflow.max-everyday.com/2018/06/python3-importerror-no-module-named-htmlparser/

    from HTMLParser import HTMLParser #python2可这么写

    from html.parser import HTMLParser #python3建议都这么写后,问题解决了

  • 相关阅读:
    Vue-基础(四)
    Vue-基础(三)
    Vue-基础(一)
    Vue-基础(二)
    CSS-初始化模板2(common.css)
    CSS-初始化模板1(normalize.css)
    CSS预处理器-Less
    MySQL视窗函数row_number(), rank(), denser_rank()
    LeetCode第4题:寻找两个有序数组的中位数
    无重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/pinpin/p/10451238.html
Copyright © 2011-2022 走看看