從網頁中獲取資料,由於編碼問題,出現亂碼。
方法:
response = session.get('http://***x')
print(response.encoding)
response.encoding = 'utf-8'
print(response.json())
原因:
1.因為資料來源的編碼宣告不規範,導致 reuqests 無法判斷出返回資料的正確編碼,從而使用了它的預設編碼 iso8859-1 來將資料轉換為 unicode,沒使用正確的編碼 utf-8,於是就出現亂碼了。
解決辦法一就是手動設定返回資料的正確編碼:response.encoding = 『utf-8』。這樣結果就是正確的 unicode 型別字串。
或者將錯誤的 unicode 用同樣的 iso8859-1 編碼轉換回去原本的 utf-8 編碼的 str 型別字串:data.encode(『iso8859-1』)。
2.(沒明白,反正就這麼個意思吧。編碼真是個大坑!)python中實際上有兩種字串,分別是str型別和unicode型別,這兩者都是basestring的派生類。str實際上相當於string, 而unicode則是標準的字串,相當於wstring。
其中i/o讀入的基本都是str型別,也就是說python不關心這些位元組代表什麼含義。但是如果需要做真正的字串操作的時候,建議使用unicode型別,這樣確保不存在編碼問題。
json理論上應該可用ascii完全表示,其中的寬字元用類似\u1111的形式表達。但是現在有很多不規範的json出現,例如s=""""""。此時就需要你自己確定這部分內容用位元組表達時,究竟用了什麼編碼,如果是utf-8,那麼就首先s_u = s.decode(「utf-8」)變成unicode字串。
另一方面,只要保證這段字串的編碼和python執行時環境的編碼保持一致,也是可以直接loads(str型別變數)的。例如linux下如果lang是utf-8,那麼python屁顛屁顛跑著的時候就可以直接把utf-8編碼的json串塞進去。
關於xpath中的 和
在今天之前,一直沒有注意過.的用法,習慣性的都是用 來查元素。比如在 menu title 中找id div1 的 div 我們可以用 div id div1 webdriver webelement we driver.findelement by.xpath div id div1 如果要繼續找...
關於xpath中的 和
在今天之前,一直沒有注意過.的用法,習慣性的都是用 來查元素。比如在 menu title 中找id div1 的 div 我們可以用 div id div1 webdriver webelement we driver.findelement by.xpath div id div1 如果要繼續找...
關於xpath的學習筆記
xpath即為xml路徑語言,它是一種用來確定xml 標準通用標記語言的子集 文件中某部分位置的語言。xpath基於xml的樹狀結構,提供在資料結構樹中找尋節點的能力。起初 xpath 的提出的初衷是將其作為乙個通用的 介於xpointer與xslt間的語法模型。但是 xpath 很快的被開發者採用...