|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这也是《零基础入门学习Python》第53讲的最后一题
环境:Windows7专业版
Python 3.6
这个是答案
- import urllib.request
- import chardet
- def main():
- i = 0
-
- with open("urls.txt", "r") as f:
- # 读取待访问的网址
- # 由于urls.txt每一行一个URL
- # 所以按换行符'\n'分割
- urls = f.read().splitlines()
-
- for each_url in urls:
- response = urllib.request.urlopen(each_url)
- html = response.read()
- # 识别网页编码
- encode = chardet.detect(html)['encoding']
- if encode == 'GB2312':
- encode = 'GBK'
-
- i += 1
- filename = "url_%d.txt" % i
- with open(filename, "w", encoding=encode) as each_file:
- each_file.write(html.decode(encode, "ignore"))
- if __name__ == "__main__":
- main()
复制代码
然后这是我自己的代码:
- import urllib.request
- import chardet
- def main():
- with open("urls.txt","r") as f:
- i=1
-
- #读取网址
- #去除‘\n’
- urls=f.read().splitlines()
-
- for each in urls:
- #创建文件名
- filename="url_%d.txt" % i
- #读取网址
- response=urllib.request.urlopen(each).read()
- #识别网页编码
- web_type=chardet.detect(response)
- webtype=web_type['encoding']
- if webtype=="GB2312":
- webtype="GBK"
-
- #新建文件并写入
- with open(filename,'w',encoding=webtype) as fn:
- fn.write(response,decode(webtype,"ignore"))
- i+=1
- if __name__=="__main__":
- main()
复制代码
然后就。。。
- Traceback (most recent call last):
- File "D:\pytest\爬虫1-2.py", line 29, in <module>
- main()
- File "D:\pytest\爬虫1-2.py", line 24, in main
- fn.write(response,decode(webtype,"ignore"))
- NameError: name 'decode' is not defined
复制代码
实在是想不明白为什么会出错,望各位指出错误,感激不尽
24行response后面应该是 . 不是 , 吧?
|
|