我已经构建了一个基本的scraper,它占用一个页面并将其写入txt文件。重要的代码是:
web_page = requests.get(url)
with open(filename) as file:
file.write(str(web_page.content))
但是我生成的文本文件包含许多不正确的字符,例如\ xe2 \ x80 \ x9c
我已经做了很多阅读,并找到了三种可以避免这个问题的方法,但问题是我已经删除了大量我不想再做的数据了。
我尝试了三种方法来阻止问题的发生:
但这些都不适用于我下载的文件。
答案 0 :(得分:3)
这是[15, 7, 8, 3, 9, 4, 0, 11, 14, 6, 2, 10, 13, 5, 1, 12]
[6, 14, 10, 3, 5, 13, 9, 1, 2, 4, 11, 7, 15, 12, 8, 0, None]
[None, 2, 4, 5, 11, 13, 14, 15, 0, 1, 3, 7, 8, 9, 10, 12]
对象的python的字符串表示,而不是utf-8。 bytes
是web_page.content
将其解码为字符串之前的网页的二进制内容。 requests
创建了一个python字符串表示的二进制数据(非ascii字节被转义,整个事件被包装在str(...)
中),您写入该文件。您所要做的就是通过让python将字符串解析回二进制数据并保存它来反转该过程。
b'...'
将来您可以请求为您解码文件或保存二进制文件:
import ast
content = open('test.html').read()
open('test.html.fixed', 'wb').write(ast.literal_eval(content))