问题场景:
在学习python爬虫过程中对文件写入异常的处理
环境描述:
操作系统:mac 13.7.1
编译工具:VScode 1.91.1 (Universal)
python版本:python3.7.3
问题描述
简单编写了一个小爬虫代码,代码如下:
#coding=utf-8
from urllib.request import urlopen
url = "http://www.xxx.com"
resp = urlopen(url)
with open('xxx.html','w') as f:
f.write(resp.read().decode('utf-8'))
print('over')
编译执行后发现已经生成了xxx.html文件,但是文件里面并没有写入相应的信息。
原因分析:
排除方法一:
最开始分析的是文件的权限问题,没有写权限,但是最后发现不是写权限的问题,即便是赋予文件写入的权限也不行;
排除方法二:
删除已经生成的xxx.html文件,避免因为文件被其他服务占用导致无法写入,发现也不是这个问题。
排除方法三:
可能是在写入文件时遇到了编码问题,调整了代码内容,改为:
with open('baidu.html','w',encoding='utf-8')
发现还是不能写入。
解决方案:
最后发现将原来的代码部分中的
with open('xxx.html','w') as f:
f.write(resp.read().decode('utf-8'))
改为
with open('xxx.html',mode='w') as f:
f.write(resp.read().decode('utf-8'))
就可以写入了。