声明:之前在用python写程序的过程中碰到过很多的报错,好多都是自己到处找解决方案之后解决的,很多答案都不正确,也浪费了不少时间,我会在日后的生活中会把我碰到的一些报错以及解决方法整理出来,方便大家查证,少走弯路。
分类:
一、路径错误导致的报错
- (1)安装完xrld包之后还会报错
按照网上的答案发现安装完xrld包之后还是报错,如下图:
解决方法:安装路径不对,类似的错误可以从自己用的编译器的安装路径中去找,例如我用的pycharm,路径如下:
所以,应该在pycharm的包管理里面安装xrld包,这样路径正确了就不会再报错了。
- (2)NLTK包运行过程中报错:LookupError
- (3)导入自定义的包时,报错:ModuleNotFoundError: No module named 'XXXX'
在多层目录下导入自定义的模块时,可能会碰到这样的错误,但是,请千万千万注意看自己项目的目录,可能是导入的路径没看仔细。
例如:下面的目录,咋一看,导入的路径没有问题,怎么就是一直报错呢?
实际上这是三层目录,粗心的看成了两层,最外层跟第二层的名称是一样的(我知道可能没必要),所以对于这样的路径,严格按照路径一层一层的写。
import scrapy
from StackOverflow_Spider.StackOverflow_Spider.items import StackoverflowSpiderItem
加了一层路径之后,就不报错了。有时候不是什么环境配置的问题,就是路径错了,所以一定要仔细!!!
【说明】这是调试单个文件时碰到的问题(只是举例说明路径错误导致的报错),如果是调试整个爬虫,可以用命令框启动爬虫,也可以新建一个文件,把指令写成可执行的.py文件,如下面的例子,其中“XXX”是爬虫的名称。这是爬虫文件的调包还是按照正常的操作写
import scrapy
from StackOverflow_Spider.items import StackoverflowSpiderItem
运行“main.py”即可,不用启动爬虫时,每次都打开命令框输入指令了。
from scrapy import cmdline
# cmdline.execute(['scrapy crawl XXX']) # 这种写法是错的,因为命令框需要一个一个命令符识别,不能识别字符串。如果要改,就写成下面的方法一。
# 方法一
# cmdline.execute('scrapy crawl XXX'.split()) # 这种写法就是分割字符串,也就变成了一个一个命令符。
# 方法二
cmdline.execute(['scrapy', 'crawl', 'XXX'])
- (4)
二、写爬虫是遇到的问题
1. 利用Webdriver爬取网页信息中碰到的问题
错误1:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH
解决办法如下:(1)先需要下载Chromedriver(根据自己的Chrome浏览器的版本下载对应的文件),一个叫chromedriver.exe文件(下载chromedriver) (下载完解压可能会碰到杀毒软件误报病毒,放心,添加信任即可,该文件绝对无毒);(2)把chromedriver.exe拷贝至Chrome浏览器目录下(如 C:\Program Files (x86)\Google\Chrome\Application)以及python根目录下(D:\Program Files (x86)\Python);【注】环境变量可有可无的,不用管。
2. 在python中,每一句代码都应该顶格写!
错误2:IndentationError: unexpected indent
出现这种错误,很可能是复制删帖代码的时候出现的。IndentationError:unexpected indent(其中indentation是缩进,缩排的意思),这个错误是说,出现了不恰当的缩进,因为在python中,每一行代码(模块内的代码除外,例如if,for,自定义的函数等模块)都应该定格写,不要留缩进。
Python对缩进要求很严格的,另外,也要注意区分空格和缩进。
三、文件操作遇到的报错
(1) pandas打开带有中文路径的文件时,会报错:OSError: Initializing from file failed
解决办法:
# 直接读取含中文的文件名(或中文路径)会报错
import pandas as pd
path = r"D:\【路径中有中文】\文件名.csv"
df = pd.read_csv(path)
# 调用open操作,则不会报错:
file = open(path)
df= pd.read_csv(file)
(2) pandas.errors.ParserError: Error tokenizing data
这是pandas在读取csv文件时,碰到错误的情况了(可能是空值,或者异常符号),可以选择跳过,可以通过统try?else输出错误的日志,之后检查。
pd.read_csv(filename, encoding=‘utf_8_sig’, error_bad_lines=False) #加上error_bad_lines=False 跳过错误
(3)
四、NLTK相关报错
(1)Resource stopwords not found.
【错误类型】NLTK路径错误,会导致编译器找不到你安装的nltk的包。
运行这一段相当简单的代码时都会报错,提示找不到stopwords,可我明明已经下载了全部的nltk包,不可能是没有下载,我怀疑是载入的路径有问题。
from nltk.corpus import stopwords
stopwords_list = stopwords.words('english')
print(stopwords_list)
下面这种错误是因为我把我通过nltk.download()命令下载的路径,设置为非默认路径,会导致这个包里的程序在默认路径的库里找不到正确的路径,所以出现了下面的错误:
Traceback (most recent call last):
File "D:\Program Files (x86)\JetBrains\PyCharm 2020.2.2\workspace\lib\site-packages\nltk\corpus\util.py", line 83, in __load
root = nltk.data.find("{}/{}".format(self.subdir, zip_name))
File "D:\Program Files (x86)\JetBrains\PyCharm 2020.2.2\workspace\lib\site-packages\nltk\data.py", line 586, in find
raise LookupError(resource_not_found)
LookupError:
**********************************************************************
Resource stopwords not found.
Please use the NLTK Downloader to obtain the resource:
>>> import nltk
>>> nltk.download('stopwords')
For more information see: https://www.nltk.org/data.html
Attempted to load corpora/stopwords.zip/stopwords/
Searched in:
- 'C:\\Users\\Name/nltk_data'
- 'D:\\Program Files (x86)\\JetBrains\\PyCharm 2020.2.2\\workspace\\nltk_data'
- 'D:\\Program Files (x86)\\JetBrains\\PyCharm 2020.2.2\\workspace\\share\\nltk_data'
- 'D:\\Program Files (x86)\\JetBrains\\PyCharm 2020.2.2\\workspace\\lib\\nltk_data'
- 'C:\\Users\\Name\\AppData\\Roaming\\nltk_data'
- 'C:\\nltk_data'
- 'D:\\nltk_data'
- 'E:\\nltk_data'
**********************************************************************
解决办法:于是我就找到了这个报错检查的文件,在下载nltk.download()路径下的“data.py”文件里,这时候可以修改nltk.download时路径下的“data.py”文件,加上一条路径(即自己运行nltk.download()时选择的路径),如下图:
这时候,再运行跟nltk相关的程序,不好出现找不到文件的错误了。
这种奇怪的报错给了我们一个教训:尽量选用默认路径,选择奇怪的路径,这些下载下来的工具包在加载文件的时候可能会找不到下载的文件。
(2)
不定期更新。。。
整理不易,如果对你有帮助,点个赞再走呗...