2015-04-12 83 views
0

我使用Beautiful Soup在两台不同的服务器(美国/欧洲)上运行相同的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) 

但它不会改变任何东西,美国的服务器仍然收到英尺单位/美制日...... 我怎么能在欧洲服务器上接收美国服务器上的电表单位和欧洲日期格式?

+1

我在欧盟见脚;你确定它不仅仅是存储在cookie中的站点首选项吗? –

+0

这没关系你的答案被接受,谢谢。 –

回答

3

没有办法确定公制系统的首选;浏览器中不存储这种偏好,您的操作系统也不会跟踪它。

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

preferences button

units option in the preferences UI

此设置似乎是存储在MSW_unitgroup饼干:

cookie in Chrome resources panel

该值在之间切换,useu

登录的用户可以设置优先级为他们的帐户的一部分:

preference panel with unit choice

由于Python代码没有登录到一个账户,默认会显示;最多可以根据您的IP地址挑选默认值。

您可以简单地设置该cookie自己:在MSW_unitgroup饼干

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) 
+0

它完美的作品! –

1

该网站magicseaweed.com存储您的单位选择。如果您需要公制单位,则需要发送值为“eu”的MSW_unitgroup Cookie。

enter image description here

相关问题