2015-04-12 91 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

相關問題