目录:
1.前言
- 事务管理类app的项目,需要后台导入某工学生的个人课表,选择用python抓取并解析HTML的方式
- 如果习惯了实战一遍、优先解决问题,再去学习技术细节,那本文应该对你有所帮助,因为我就是这样干的
- 本篇文章记录 解析HTML 获取课程内容的部分,知识点包括:
- 编码演变的历史
- 正则表达式
- BeautifulSoup4库的使用
- 登录系统并抓取HTML页面参见: python爬虫之urllib登录抓取HTML页面
- GitHub下载地址:Python源码与解析的HTML文件
2.编码演变历史
为了弄清下面几个问题,需要对编码演变的历史做必要的介绍,更详细介绍可以在本文的参考资料中查看
- 为什么UTF-8格式的代码,跨平台复制粘贴,有时会出现中文注释乱码,甚至没有中文代码也无法正常运行,在转成GB2312或者Unicode就搞定
- 做正则匹配时,错误的编码格式会导致中文匹配失败
- BeautifulSoup的构造函数应选择哪种编码
2.1 Charset & Character Encoding
- 字符(Character):是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等
- 字符集(Charset):是多个字符的集合,每个字符集包含字符个数不同,常见字符集有ASCII,GB2312,BIG5,Unicoede,UTF-8等
- 字符编码(Character Encoding):为了让计算机能够识别和存储字符集所使用的法则,使字符集和数字系统建立对应关系
下面按发展史简要介绍几种主要字符集及其编码
2.2 ASCII字符集与编码
- ASCII字符集:包括控制字符(回车,换行等),可显示字符(英文字符,阿拉伯数字等)
- ASCII编码:将ASCII字符集转换为计算机可存储计算的数的规则,
- 特点:这是较早出现、现今最通用的单字节编码,即8 bits表示一个字符.举例,查ASCII码对照表知,a的ASCII码值为97(十进制),二进制表示为01100001(占用一字节)
- 缺点:显然ASCII能显示的字符仅限于英语,扩展后的ASCII也只解决了部分西欧语言的显示,Macbook就放弃了ASCII而采用后面提到的Unicode