1.初步筛选项目并爬取issue数据
2.网页数据预处理
Github api接口中的issue id和project id和后台数据库中的id没有联系。通过issues表单的repo_id和issue_id匹配爬虫数据,且一个issue可能有多个标签,将issue_id和label插入新表
issues_labels。
3.进一步筛选项目
最终得到1106332条bug,1107785条non-bug。
[b]统计项目带标签的issue数量及bug比率
错误记录:
1.Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F
对应UTF-8编码格式中的4字节编码。正常的汉字一般不会超过3个字节,这里出现4个字节实际上是它对应的是智能手机输入法中的表情。如果想存储4个字节的必须用utf8mb4类型。不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3。
更改mysql表格字段编码格式,并且在python处理脚本中读取数据时也要设置为utf8mb4。
2.python解析网页数据时,ast.literal_eval()能将数据还原成它本身或者是能够转化成的数据类型。并且相较于eval(),会进行类型安全检查
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='ghtorrent_2017_5', charset='utf8mb4')
ALTER TABLE issues CHANGE body body MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;