网站如何知道您的公制、日期格式...?

How does a website know your metric system, date format ...?

我在 2 个不同的服务器 (US/Europe) 上 运行 相同的 python 脚本使用 Beautiful Soup 并请求获取 HTML 字符串。 但是我收到相同 URL 的不同字符串:

http://magicseaweed.com/Playa-Jaco-Surf-Report/2472/

一个单位为米,日期为欧洲格式(欧洲服务器),另一个单位为英尺,日期为美国日期格式(美国服务器)。

我已尝试更改请求的 HTTP header:

headers = {'Accept': '*/*',
           'Accept-Encoding': 'gzip, deflate',
           'Accept-Language': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,de;q=0.2,ru;q=0.2,ja;q=0.2',
           'User-Agent': 'python-requests/2.6.0 CPython/2.7.6 Darwin/14.1.0'}

r = requests.get(url,headers = headers)

但这并没有改变什么,美国服务器仍然收到脚units/Us格式的日期... 我怎样才能像在欧洲服务器上一样在美国服务器上接收计量单位和欧洲日期格式?

无法确定首选的公制;浏览器不会存储此类首选项,您的 OS 也不会跟踪它。

相反,该站点只是存储一个偏好,可在 UI:

中设置

此设置似乎存储在 MSW_unitgroup cookie 中:

值在 ukuseu 之间切换。

登录用户可以将首选项设置为他们帐户的一部分:

由于您的 Python 代码尚未登录帐户,因此将显示默认值;最多只能根据您的 IP 地址选择默认值。

您只需自己设置该 cookie:

cookies = {'MSW_unitgroup': 'eu'}  # european units

headers = {'Accept': '*/*',
           'Accept-Encoding': 'gzip, deflate',
           'Accept-Language': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,de;q=0.2,ru;q=0.2,ja;q=0.2',
           'User-Agent': 'python-requests/2.6.0 CPython/2.7.6 Darwin/14.1.0'}

r = requests.get(url, headers=headers, cookies=cookies)

站点 magicseaweed.com 将您选择的单位存储在 MSW_unitgroup cookie 中。如果您想要公制单位,您需要发送 MSW_unitgroup cookie 的值为 "eu".