我想通过网络抓取从路由器下载配置文件。我要实现的过程是这样:
到目前为止,我有以下代码:
with requests.Session() as s: # To login into the modem
pagePostBackUp = 'https://192.168.1.1/goform/BackUp'
s.post(urlLogin, data=loginCredentials, verify=False, timeout=5)
dataBackUp = {'dir': 'admin/','file': 'cmconfig.cfg'}
resultBackUp = s.post(pagePostBackUp, data=dataBackUp, verify=False, timeout=10)
print(resultBackUp.text)
最后一行是我要保存到文件中的内容。但是,当我尝试使用以下代码进行操作时:
f = open('/Users/user/Desktop/file.cfg', 'w')
引发错误,ASCII编解码器无法编码字符。如果我使用例如encode ='utf16'保存文件,则与我最初手动下载的文件不同。
所以,问题是,如何使用路由器通过网络给我的相同编码保存此文件? (作为unicode)。该文件的内容如下所示:
�����g���m���������Z����ofpqJ U \ V,.o /��zf��v���〜W3 =,�D};y�tL�cJ
答案 0 :(得分:1)
将代码的最后一行更改为以下内容:
with open('/Users/user/Desktop/file.cfg', 'wb') as f:
f.write(resultBackUp.content)
这会将有效载荷视为数据(bytes
),而不是文本:文件以二进制模式打开,内容按原样使用。
没有编码/解码发生。