Python3爬虫学习之常见报错内容汇总(持续更新)

目录

1 低级错误(比如拼写错误等)

 1.1 NameError: 

1.2 属性错误 AttributeError:  属性拼写错误

2  应用错误(类型应用,属性使用的错误)

2.1 类型错误 TypeError:  如字符串连接错误

2.2  属性应用错误  AttributeError

3 模块相关错误

3.1 找不到对应模块 ModuleNotFoundError:

3.2 相关模块相关错误,如os的  OSError: [Errno 22] Invalid argument: 

3.3 requests模块问题:requests.exceptions.InvalidSchema无效架构

4 语法错误 SyntaxError:

4.1 函数语法错误 (缺少括号)

4.2 函数语法错误 (缺少:)

4.3 字符串连接错误  SyntaxError: unterminated string literal 未结束的字符串

 4.4  值错误/参数错误  ValueError:

5 格式错误

5.1  缩进错误 IndentationError:  

5.2 语法错误(复制代码空格导致错误):SyntaxError: invalid non-printable character U+00A0

6 非错误,警告提醒类!

6.1  BeautifulSoup(html1,"lxml") 缺少参数时的警告


1 低级错误(比如拼写错误等)

 1.1 NameError: 

  • print 打成了 priint
  • 1.2 属性错误 AttributeError:  属性拼写错误

  • AttributeError: module 'requests' has no attribute 'gat'. Did you mean: 'get'?
  • NameError: name 'priint' is not defined. Did you mean: 'print'?
  • python 还能给出修改意见
  • 2  应用错误(类型应用,属性使用的错误)

    2.1 类型错误 TypeError:  如字符串连接错误

    TypeError: can only concatenate str (not “int“) to str

  • 我原来代码有这么一句:
  • print ("本页返回状态码: "+res.status_code)
  • 运行会报错
  •  TypeError: can only concatenate str (not “int“) to str
  • 因为res.status_code 返回的是数字,只有字符串可以  "" + "" ,  所以用 str() 把 res.status_code 转化为string 就OK了
  • 修改为
  • print ("本页返回状态码: "+str(res.status_code))
  • 2.2  属性应用错误  AttributeError

     AttributeError: 'str' object has no attribute 'text'

    错误原因

  • print (res.text)  即相当于 print(html1.text)
  • 当时 res=html =""" … """
  • 即相当于 print(string.text)
  • string本身并没有 .text 这种下级属性了!
  • 这里除非html1 不是一个string, 而是一个 html网页,用requests.get() 取下来的就可以
  • 即 这样是对的  print(requests.get(url1).text)
  • 3 模块相关错误

    3.1 找不到对应模块 ModuleNotFoundError:

  • 报错内容:  ModuleNotFoundError: No module named 'bs4'
  • 需要现安装模块后,才能引用
  • 没有安装这个模块就import 就会报错
  • 3.2 相关模块相关错误,如os的  OSError: [Errno 22] Invalid argument: 

    报错  OSError: [Errno 22] Invalid argument: 

    错误写法

  • 错误写法
  • path1="E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
  • soup1=BeautifulSoup(open(path1))
  • 正确写法

  • path1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
  • soup1=BeautifulSoup(open(path1))
  • 因为path1, url1 这种 一个长string里本身带一些特殊符号,比如/ \等转义符,就要用r转换为rawdata
  • 报错信息

    OSError: [Errno 22] Invalid argument: 'E:\\work\\FangCloudV2\\personal_space\x02learn\\python3\\html0003.html'

    3.3 requests模块问题:requests.exceptions.InvalidSchema无效架构

  • 错误写法1
  • print (html1.text)
  • 这个例子是因为当时我这个 html 本身已经是一个字符串 """ … '"""的内容,而不是网页里
  • 所以string.text 会报错
  • print (html1.text) 会报错
  •  requests.exceptions.InvalidSchema: No connection adapters were found for '<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title"><b>The Dormouse\'s story</b></p>\n\n<p class="story">Once upon a time there were three little sisters; and their names were\n<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,\n<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and\n<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;\nand they lived at the bottom of a well.</p>\n\n<p class="story">…</p>\n'

    3.4 re.error: unbalanced parenthesis at position 7

    使用re 正则库的时候,括号没有进行转义,或者丢了一半括号

    4 语法错误 SyntaxError:

    4.1 函数语法错误 (缺少括号)

  • SyntaxError: Missing parentheses in call to 'print'. Did you mean print(…)?
  • python 还能给出修改意见
  • print ()  语法需要有括号
  • 4.2 函数语法错误 (缺少:)

    正确写法

  •  python语法,要注意 冒号和缩进: 
  • 正确写法 with open(path1 ,"a") as f :
  • 报错内容

  •    with open(path1 ,"a") as f
  •                               ^
  • SyntaxError: expected ':'
  • 4.3 字符串连接错误  SyntaxError: unterminated string literal 未结束的字符串

  • SyntaxError: unterminated string literal
  • 未结束的字符串
  • 造成这种错误的原因其实就是你运行的字符串有多义性
  • 比如字符串的引号没有成对出现。
  • 比如 转义序列 使用不正确
  • 下面的例子就是 把\ 写成  \\ 后即可解决问题
  • 报错例子

    错误:print(‘I'm a student')

    正确:print(‘Im a student')

    错误:with open(loc1+str(page)+'\'+p_name, 'wb') as f:

    正确:with open(loc1+str(page)+'\\'+p_name, 'wb') as f:

     4.4  值错误/参数错误  ValueError:

  • soup1=BeautifulSoup(open(html1,"html.parser"))
  • ValueError: invalid mode: 'html.parser'
  • 5 格式错误

    5.1  缩进错误 IndentationError:  

    IndentationError: unexpected indent

  • IndentationError: unexpected indent
  • 就是缩进不符合python 要求
  • 5.2 语法错误(复制代码空格导致错误):SyntaxError: invalid non-printable character U+00A0

  • 从网上边复制代码,复制的代码中空格和Python中的格式不一样造成的
  • 将脚本中的空格全部删除重新敲再重新运行即可。
  • 6 非错误,警告提醒类!

    6.1  BeautifulSoup(html1,"lxml") 缺少参数时的警告

  •  soup1=BeautifulSoup(html1,"lxml")
  • lxml 是解析方式
  • 如果不写,默认也会采用 lxml的解析
  • 如果写成 soup1=BeautifulSoup(html1) 可以正常运行,不会中断运行,但是会提醒
  •  

    Python Error – UnboundLocalError: local variable xxx referenced before assignment

    变量使用前未初始化

    重名变量,在函数内有全局声明时,当然为全局变量

    除此之外,当重名变量在函数内存在(可以不是在函数内第一次出现时)赋值语句(包括 += 语句)时,它被认定为局部变量,否则被认为是全局变量。

    插说一句,这个语法规则很容易理解。因为当出现赋值语句时,说明重名变量在函数内的值已经与函数外的值完全无关,重新赋了个新值,所以完全没有必要视之为全局变量

    这就导致,当 函数内的、与函数外全局变量重名的变量,第一次在函数中出现不是赋值语句,而后面又在函数中出现了它的赋值语句 时,Python 解释器会报 “UnboundLocalError” 错误。这种情况的产生又分两种原因:

    重名变量是全局变量,忘记对其用 global 关键字声明就使用(这种情况,如果后面没有赋值语句也无妨,解释器也会认为它是全局变量),但后面又出现了赋值语句,使 Python 解释器误解析为局部变量
    重名变量是局部变量,忘记初始化了
     

    也就是说,python 会默认赋值语句 的变量是局部的,而如果次

    Python Error – UnboundLocalError: local variable xxx referenced before assignment_iLiuXH的博客-CSDN博客

     

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python3爬虫学习之常见报错内容汇总(持续更新)

    发表评论