簡體   English   中英

使用python請求模塊時的LocationValueError

[英]LocationValueError when using python requests module

我一直在使用 requests 包與網絡交互,過去沒有任何問題。 最近在使用一個我大約一個星期沒有使用過的腳本時,我在執行常規requests.get()調用時遇到了以下錯誤:

LocationValueError: No host specified.

背景調查

在對python requests LocationValueError各種排列進行大量谷歌搜索之后, python requests no host errorpython urllib3 LocationValueError (根據堆棧跟蹤,錯誤是由請求在下面使用的urllib3引發的)我只設法在urllib3文檔中找到了這些信息:

異常 urllib3.exceptions.LocationValueError

當給定的 URL 輸入有問題時引發。

我試過的

認為我的請求包版本可能有問題,因為這可以說是請求包中使用的最基本的調用之一,我執行了以下操作:

  • 重新安裝的請求
  • 使用pip創建虛擬環境並安裝請求
  • 來自源的已安裝請求
  • 顯式安裝 urllib3
  • 從源代碼安裝了 python 3.4 然后嘗試了(我現在使用 python3.5)

在所有情況下,我都使用以下代碼來查看請求是否仍在拋出 LocationValueError:

import requests
address = 'http://www.google.com/'    
requests.get(address)

這在過去一直有效。 我在另一台計算機(一台 ubuntu 筆記本電腦)上檢查過,它在那里工作,讓我認為這個問題是我的計算機所特有的。

問題的堆棧跟蹤

這是我在使用安裝在 virtualenv 和 python3.4 中的請求時得到的堆棧跟蹤。

In [5]: import requests

In [6]: requests.get('http://www.google.com/')
---------------------------------------------------------------------------
LocationValueError                        Traceback (most recent call last)
 in ()
----> 1 requests.get('http://www.google.com/')

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/api.py in get(url, params, **kwargs)
     67 
     68     kwargs.setdefault('allow_redirects', True)
---> 69     return request('get', url, params=params, **kwargs)
     70 
     71 

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/api.py in request(method, url, **kwargs)
     48 
     49     session = sessions.Session()
---> 50     response = session.request(method=method, url=url, **kwargs)
     51     # By explicitly closing the session, we avoid leaving sockets open which
     52     # can trigger a ResourceWarning in some cases, and look like a memory leak

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    466         }
    467         send_kwargs.update(settings)
--> 468         resp = self.send(prep, **send_kwargs)
    469 
    470         return resp

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/sessions.py in send(self, request, **kwargs)
    574 
    575         # Send the request
--> 576         r = adapter.send(request, **kwargs)
    577 
    578         # Total elapsed time of the request (approximately)

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    335         """
    336 
--> 337         conn = self.get_connection(request.url, proxies)
    338 
    339         self.cert_verify(conn, request.url, verify, cert)

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/adapters.py in get_connection(self, url, proxies)
    247             proxy = prepend_scheme_if_needed(proxy, 'http')
    248             proxy_manager = self.proxy_manager_for(proxy)
--> 249             conn = proxy_manager.connection_from_url(url)
    250         else:
    251             # Only scheme should be lower case

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_url(self, url)
    137         """
    138         u = parse_url(url)
--> 139         return self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
    140 
    141     def urlopen(self, method, url, redirect=True, **kw):

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_host(self, host, port, scheme)
    246 
    247         return super(ProxyManager, self).connection_from_host(
--> 248             self.proxy.host, self.proxy.port, self.proxy.scheme)
    249 
    250     def _set_proxy_headers(self, url, headers=None):

/home/michael/Documents/my_test_env/lib/python3.4/site-packages/requests/packages/urllib3/poolmanager.py in connection_from_host(self, host, port, scheme)
    108 
    109         if not host:
--> 110             raise LocationValueError("No host specified.")
    111 
    112         scheme = scheme or 'http'

LocationValueError: No host specified.

如果有人可以幫助解釋錯誤的原因或指出我最感激的正確方向。 當我使用 request.Session 對象獲取擴展會話的頁面時,也會發生此問題。

對我來說,問題是我被請求的 url 重定向到Location: https// ,這可能無效,但 urllib3 無法處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM