免费提供 github 热搜历史数据,后台回复 邮箱 即可
使用爬虫抓取 github trend 网页的时候,又报错了,难道 GitHub 又又更新网页了?
看了报错的日志后,这次冤枉 github 了,是爬虫脚本自己报的错:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘xe7’ in position 75: illegal multibyte sequence quence
从日志可以看到,出错的原因是无法使用 gbk 编码解析 ex7 编码。
但是比较奇怪的是,我记得爬虫脚本中是没有地方使用 gbk 编码的,为什么会提示 gbk 报错呢?
刚看到这个报错的时候,我还以为是 github 修改了网页的编码格式,导致爬虫脚本使用 request 获取到的信息流编码格式有问题。
但是仔细看完日志后,发现并不是网站的问题。因为日志中显示的是爬虫脚本中的 print(result) 这行代码出现了错误,如下图红色箭头标记的位置:
但是呢,只是使用 print 将数据打印到控制台,记录下执行的过程,怎么就会出错呢,就很不理解。
然后在网上查了些资料后,发现 print 函数自身是有限制的,并不能打印所有 unicode 字符。
如果想要打印英文字符,可以使用下面的方法打印
print(result.decode('utf-8'))
但是使用上面的方法打印中文字符还是会出现乱码,可以使用下面的方法来解决
sys.stdout = io.TextIOwrapper(sys.stdout.buffer,encoding='gb18030')
但是,脚本中这条 print 命令用处不是很大,所以可以直接删除掉。修改后的脚本,我已经上传到 github, 大家及时更新脚本,保证爬虫脚本可用哦。
另外,本次更新还包含了使用百度翻译 API 自动翻译的功能,会在抓取的过程中自动将项目的简介从英文翻译成中文,并将中英文介绍存储到 mysql 数据库。可以点击下面的图片,了解具体的修改内容和使用方式:
不过百度通用文本翻译的 API,翻译专业的词汇效果不能说一般,只能说有点差。
比如说下面的是 GitHub 上一个换脸项目的英文介绍:
使用百度通用文本翻译 API 翻译出来的中文如下:
后续,我再试试其他的翻译 API,比如有道翻译和微软翻译的 API,看下效果如何。