欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Python requests庫編碼 socks5代理的問題

 更新時間:2018年05月07日 14:52:26   作者:連平凡地老去也做不到_FBI  
今天小編就為大家分享一篇解決Python requests庫編碼 socks5代理的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

編碼問題

response = requests.get(URL, params=params,
      headers=headers, timeout=10)
print 'self.encoding',response.encoding
output:
self.encoding ISO-8859-1

查了一些相關(guān)的資料,看了下requests的源碼,只有在服務(wù)器響應(yīng)的頭部包含有Content-Type,且里面有charset信息,requests能夠正確識別,否則就會使用默認(rèn)的 ISO-8859-1編碼。github中也有討論這個問題,但requests的作者們說是根據(jù)rfc來的.

在上述代碼中,response.text 是requests庫返回響應(yīng)的Unicode編碼內(nèi)容

這樣,當(dāng)我們?nèi)カ@取一些中文網(wǎng)頁的響應(yīng)內(nèi)容時,且其響應(yīng)頭部沒有charset信息,則response.text的編碼就會有問題(requests的json()方法也受這個編碼影響)

比如,我爬取百度的網(wǎng)頁的時候,其中文是utf-8編碼的

如下python2.7代碼

In [14]: a = '約' #utf-8編碼
In [15]: a
Out[15]: '\xe7\xba\xa6'
In [22]: b=a.decode('ISO-8859-1')#response.text 認(rèn)為響應(yīng)內(nèi)容是ISO-8859-1編碼,將其decode為Unicode
In [23]: b
Out[23]: u'\xe7\xba\xa6'
In [26]: c=b.encode('utf8')#如果我們沒有注意ISO-8859-1,直接以utf8對其進(jìn)行編碼
In [27]: c
Out[27]: '\xc3\xa7\xc2\xba\xc2\xa6'#那么encode得到的utf-8,在顯示器上顯示的就是亂碼,因為'約'的utf-8編碼是'\xe7\xba\xa6'

解決方法1: 用response.content ,response.content in bytes,所以用content可以自己決定對其的編碼

解決方法2: 獲得請求后使用 response.encoding = ‘utf-8'

解決方法3: 利用requests庫里根據(jù)獲得響應(yīng)內(nèi)容來判斷編碼的函數(shù),參考文獻(xiàn)里有講到

python2的編碼還是很亂的 str可以是各種編碼,python3統(tǒng)一str為Unicode, byte可以是各種編碼

python2中encode后是str類型,decode后是Unicode類型,python3中encode后是byte類型,decode后是str類型(Unicode編碼)

用python3吧,下面是python3的代碼

In [13]: a = '約' #Unicode
In [14]: type(a)
Out[14]: str
In [15]: b=a.encode('utf8')
In [16]: b
Out[16]: b'\xe7\xba\xa6'
In [17]: type(b)
Out[17]: bytes
In [27]: b'\xe7\xba\xa623,000'.decode('ISO-8859-1')
Out[27]: '约23,000'
In [28]: type(b'\xe7\xba\xa623,000'.decode('ISO-8859-1'))
Out[28]: str
In [29]: b'\xe7\xba\xa623,000'.decode('utf8')
Out[29]: '約23,000'

socks5代理問題

現(xiàn)在的requests2.13.0的socks5代理我在使用的時候會出現(xiàn)問題,

我用的代理是shadowsocks,比如我想要訪問https://www.facebook.com 在向本地127.0.0.1:1080端口發(fā)送socks5請求時,我發(fā)現(xiàn)shadowsocks在向一個IP地址連接,連接不上,我用chrome連接Facebook的時候,我發(fā)現(xiàn)shadowsocks是在向www.facebook.com連接,能夠成功連接,應(yīng)該是DNS解析問題,出現(xiàn)了重復(fù)解析的問題,使用requests2.12不會有這個問題,在github上也找到了相關(guān)的issue

import requests
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '
   'AppleWebKit/537.36 (KHTML, like Gecko) '
   'Chrome/56.0.2924.87 Safari/537.36'}
proxies = {'http': 'socks5://127.0.0.1:1080','https':'socks5://127.0.0.1:1080'}
url = 'https://www.facebook.com'
response = requests.get(url, proxies=proxies)
print(response.content)

以上這篇解決Python requests庫編碼 socks5代理的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PyQt5通信機(jī)制 信號與槽詳解

    PyQt5通信機(jī)制 信號與槽詳解

    這篇文章主要介紹了PyQt5通信機(jī)制 信號與槽詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python中常見的內(nèi)置函數(shù)使用講解

    Python中常見的內(nèi)置函數(shù)使用講解

    Python作為一種強(qiáng)大的編程語言,提供了豐富的內(nèi)置函數(shù),用于各種常見操作,本文將詳細(xì)介紹Python中常見的內(nèi)置函數(shù)的用法,需要的可以參考下
    2023-08-08
  • python使用opencv在Windows下調(diào)用攝像頭實(shí)現(xiàn)解析

    python使用opencv在Windows下調(diào)用攝像頭實(shí)現(xiàn)解析

    這篇文章主要介紹了python使用opencv在Windows下調(diào)用攝像頭實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 教你如何在pycharm中使用less

    教你如何在pycharm中使用less

    這篇文章主要介紹了如何在pycharm中使用less,操作步驟真的很簡單,本文通過圖文并茂的形式給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-10-10
  • Python 實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解

    Python 實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解

    下面小編就為大家分享一篇Python 實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python操作excel文件并輸出txt文件的實(shí)例

    python操作excel文件并輸出txt文件的實(shí)例

    今天小編就為大家分享一篇python操作excel文件并輸出txt文件的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python實(shí)現(xiàn)手勢識別的示例(入門)

    python實(shí)現(xiàn)手勢識別的示例(入門)

    這篇文章主要介紹了python實(shí)現(xiàn)手勢識別的示例(入門),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Django?CSRF驗證失敗請求被中斷的問題

    Django?CSRF驗證失敗請求被中斷的問題

    這篇文章主要介紹了Django?CSRF驗證失敗請求被中斷的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python對多個sheet表進(jìn)行整合實(shí)例講解

    Python對多個sheet表進(jìn)行整合實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python對多個sheet表進(jìn)行整合實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • python中pymysql的executemany使用方式

    python中pymysql的executemany使用方式

    這篇文章主要介紹了python中pymysql的executemany使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論