网站如何了解您的指标系统,日期格式......?

时间:2015-04-12 20:07:11

标签: python http-headers beautifulsoup server python-requests

我使用Beautiful Soup在2个不同的服务器(美国/欧洲)上运行相同的python脚本,并请求获取HTML字符串。 但是我收到了相同网址的不同字符串:

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

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

我试图更改请求的HTTP标头:

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)

但它没有改变任何东西,美国服务器仍然收到英尺单位/美国格式日期... 如何在美国服务器上接收仪表单位和欧洲日期格式,如欧洲服务器上?

2 个答案:

答案 0 :(得分:3)

无法确定首选的度量标准系统;浏览器中没有存储此类偏好,您的操作系统也没有跟踪它。

相反,该网站只存储可在UI中设置的偏好:

preferences button

units option in the preferences UI

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

cookie in Chrome resources panel

值在ukuseu之间切换。

登录用户可以将偏好设置为其帐户的一部分:

preference panel with unit choice

由于您的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)

答案 1 :(得分:1)

网站magicseaweed.com将您的单位选择存储在MSW_unitgroup cookie中。如果您需要公制单位,则需要使用值“eu”发送MSW_unitgroup cookie。

enter image description here