当前位置:  开发笔记 > 编程语言 > 正文

使用Beautiful Soup时,无需任何猜测即可正确检测编码

如何解决《使用BeautifulSoup时,无需任何猜测即可正确检测编码》经验,为你挑选了0个好方法。

我正在努力改进Python IRC bot的字符编码支持,以检索在频道中提到其URL的页面的标题.

我正在使用的当前流程如下:

    请求:

    r = requests.get(url, headers={ 'User-Agent': '...' })
    

    美丽的汤:

    soup = bs4.BeautifulSoup(r.text, from_encoding=r.encoding)
    

    title = soup.title.string.replace('\n', ' ').replace(...) 等等

指定from_encoding=r.encoding是一个好的开始,因为它允许我们在解析页面时charsetContent-Type头部注意.

如果它的表面落在其标题上的页面指​​定a 代替(或在顶部).charsetContent-Type

我目前看到的方法如下:

    在解析页面时无条件地使用Unicode,Dammit.这是默认设置,但它似乎对我测试过的任何页面都无效.

    在解析页面之前或之后无条件地使用ftfy.我不喜欢这个选项,因为它基本上依赖于我们(通常)拥有完美信息的任务的猜测.

    编写代码来寻找合适的标签,尝试注意我们在那里找到的任何编码,然后再回到Requests' .encoding,可能与之前的选项结合使用.我觉得这个选项很理想,但如果它已经存在,我宁愿不写这个代码.

TL; DR是否有正确的方法来使美丽的汤正确地注意到网页上任意HTML页面的字符编码,使用与浏览器使用类似的技术?

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有