TLDR:
在启动chromedriver的时候设置语言环境:
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8
注意要安装对应的语言,在ubuntu18.04用 apt 安装 language-pack-zh-hans,其它系统自己查,
# 查看已安装的语言
locale -a
# 安装中文
apt install language-pack-zh-hans
===============
起因是要用selenium爬取一些东西,在本地测试没问题,但放到服务器运行后发现爬取的数据都是英文。
直觉是浏览器发送的accept-language请求头引起的,于是找了一下chrome的启动参数,只有一个和语言设置有关:--lang。
于是设置--lang=zh 参数,再运行还是英文。奇怪的是在本地 --lang 是生效的,确实可以切换语言。本地和服务器环境不同的地方在于,我本地的chrome是跑在windows上的,而服务器是Ubuntu。
找了一遍谷歌,发现一篇文章说 --lang 参数在 linux 下是无效的。WC,浪费半天时间。
但转头一想,不可能在ubuntu下只能用英文版的chrome吧,肯定chrome还通过其它方式来识别当前的语言环境。然而更改系统的语言代价太高,但如果只是更改当前程序的环境变量呢?
代码是通过http和chromedriver沟通,在运行代码的时候设置语言肯定没用,那就在运行chromedriver的时候设置语言试试。
Bammmmm,获取到的终于是中文数据。
被这个问题卡了快一个星期,这里记一下,帮助一下需要的朋友。
请问如何在启动driver前修改语言环境?python改如何实现呢?
@bert 试试 locale.setlocale ?
或者在启动python脚本前先设置语言?
没试过,得自己尝试了。
怎么解决的。返回的内容一半英文一半中文