如何从多个同类URL页面采集指定信息并逐次写入单个TXT文件
问题原因
write()方法仅支持传入字符串参数,你传入的('\n%s' % i for i in reference)是生成器对象,无法被直接写入文件。- 当前使用的
'w'为覆盖写入模式,每次执行打开文件操作时都会清空文件已有内容,不符合循环采集时追加新数据的需求。 - 未显式指定文件编码可能在部分环境下出现乱码,同时手动调用
close()如果中途代码报错会导致缓冲区内容没写入文件。
修正方案
先将reference元组内的所有元素拼接为完整字符串,同时将文件打开模式改为追加模式'a',推荐使用with上下文管理器自动处理文件关闭逻辑,避免资源泄漏。
修正后的代码示例:
reference = ( "TY - THES", "AB - " + abstract1_1, "AU - " + author1_1, "DO - " + uri1_1, "T1 - " + title1_1, "UR - " + url, "ER - ", " ") print(reference) # a为追加模式,指定utf-8编码避免乱码 with open('Refs.txt', 'a', encoding='utf-8') as myfile: # 用换行符拼接所有元素后写入,末尾加换行符分隔不同页面的采集结果 myfile.write('\n'.join(reference) + '\n')
如果你更习惯按行写入,也可以使用writelines方法:
with open('Refs.txt', 'a', encoding='utf-8') as myfile: myfile.writelines(f'\n{line}' for line in reference)
内容的提问来源于stack exchange,提问作者M. Zain Aldin
相关产品推荐
相关产品推荐

