问题解决:xml.parsers.expat.ExpatError: mismatched tag: line 63, column 4(itchat)

问题描述

通过itchat生成二维码
在这里插入图片描述

扫码后报错

Traceback (most recent call last):
  File "itchat_app.py", line 59, in <module>
    itchat.auto_login(hotReload=True, enableCmdQR=2, statusStorageDir='./logs/loginInfo.pkl')
  File "c:\anaconda3\envs\tensorflow\lib\site-packages\itchat\components\register.py", line 32, in auto_login
    loginCallback=loginCallback, exitCallback=exitCallback)
  File "c:\anaconda3\envs\tensorflow\lib\site-packages\itchat\components\login.py", line 53, in login
    status = self.check_login()
  File "c:\anaconda3\envs\tensorflow\lib\site-packages\itchat\components\login.py", line 137, in check_login
    if process_login_info(self, r.text):
  File "c:\anaconda3\envs\tensorflow\lib\site-packages\itchat\components\login.py", line 172, in process_login_info
    for node in xml.dom.minidom.parseString(r.text).documentElement.childNodes:
  File "c:\anaconda3\envs\tensorflow\lib\xml\dom\minidom.py", line 1968, in parseString
    return expatbuilder.parseString(string)
  File "c:\anaconda3\envs\tensorflow\lib\xml\dom\expatbuilder.py", line 925, in parseString
    return builder.parseString(string)
  File "c:\anaconda3\envs\tensorflow\lib\xml\dom\expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
xml.parsers.expat.ExpatError: mismatched tag: line 63, column 4

相关代码

@itchat.msg_register(['Text'])
def text_replay(msg):
    user_intent = classifier(msg['Text'])
    print(user_intent)
    if user_intent in ["greet","goodbye","deny","isbot"]:
        reply = gossip_robot(user_intent)
    elif user_intent == "accept":
        reply = load_user_dialogue_context(msg.User['NickName'])
        reply = reply.get("choice_answer")
    else:
        reply = medical_robot(msg['Text'],msg.User['NickName'])
        if reply["slot_values"]:
            dump_user_dialogue_context(msg.User['NickName'],reply)
        reply = reply.get("replay_answer")

    msg.user.send(reply)


if __name__ == '__main__':
    # delete_cache(file_name='./logs/loginInfo.pkl')
    itchat.auto_login(hotReload=True, enableCmdQR=2, statusStorageDir='./logs/loginInfo.pkl')
    itchat.run()

解决过程

我找到了这篇文章——python Python 解析xml文件出现错误xml.parsers.expat.ExpatError: unknown encoding 的解决,文章中给出的解决方案是修改XML文件的编码为UTF-8,但我在报错的代码中并没有找到xml文件的地址或者信息,所以我只能理解为修改文件的encoding。

所以我又找到了这篇文章——Pycharm中设置encoding,在pycharm中进行设置,将编码都修改为utf-8,但并没有解决这个问题
在这里插入图片描述

总结

目前这个问题,相关社区内并没有很完善的解答。我尝试解决失败了,希望大家能共同研究一下,十分感谢!

最终情况

感谢评论区大神的解答(@江沪椿明),把 parser.Parse(string, True)这个方法的string打印出来了,发现里是个网页并不是xml格式,就算怎么改编码也不能转换成正确的xml格式. 内容是:

<p class="msg-desc">由于安全原因,此微信号不能使用网页版微信。
你可以前往微信官网 https://weixin.qq.com/ 下载客户端登录。</p>

这段内容正好与我登录网页版微信的提示完全一致,那就说明目前的itchat已经无法使用了。当然,也有些博主说部分微信号是可以登录的,但我目前没成功过(家里人都找来扫了,没一个能登录上去的)。
在这里插入图片描述

个人建议:不要把时间浪费到itchat上了,itchat-uos我下了也不行,建议直接换个方法。

解决方法

在知乎上找到了一篇文章,可以取代itchat,大家可以自行查阅——基于hook的python机器人,彻底取代itchat

  • 31
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 31
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值