鱼C论坛

 找回密码
 立即注册
查看: 710|回复: 5

[已解决]关于网页读取后保存时报错

[复制链接]
发表于 2018-8-13 23:38:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#写一个程序,依次访问文件中指定的网站,并将每个站点的内容依次存放到不同文件中。
import urllib.request
import chardet

def main():
    i = 0
    #urls.txt这个文件没下载
    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
        #文件名url_1、2、3。。。
        filename = 'url_%d.txt'%i
        #打开filename这个文件识别each_file的网络编码后写入文件
        with open(filename,'w',encoding = encode) as each_file:
            each_file.write(html.decode(encode),'ignore')        #此处报错待解决

if __name__ == '__main__':
    main()
最佳答案
2018-8-14 20:56:07
嘻嘻咯咯 发表于 2018-8-14 20:48
不过我并不懂后面这个 ‘ignore’ 的用处,能讲解一下吗

设置为ignore会忽略非法字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-14 07:50:16 | 显示全部楼层
编码报错?
参考这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-14 20:33:51 | 显示全部楼层
无符号整形 发表于 2018-8-14 07:50
编码报错?
参考这个?

我这里报错是因为  each_file.write(html.decode(encode,'ignore'))        #括号打错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-14 20:35:06 | 显示全部楼层
嘻嘻咯咯 发表于 2018-8-14 20:33
我这里报错是因为  each_file.write(html.decode(encode,'ignore'))        #括号打错了


好吧……
下次记得仔细些……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-14 20:48:37 | 显示全部楼层
无符号整形 发表于 2018-8-14 07:50
编码报错?
参考这个?

不过我并不懂后面这个 ‘ignore’ 的用处,能讲解一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-14 20:56:07 | 显示全部楼层    本楼为最佳答案   
嘻嘻咯咯 发表于 2018-8-14 20:48
不过我并不懂后面这个 ‘ignore’ 的用处,能讲解一下吗

设置为ignore会忽略非法字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 16:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表