4

I have been using the requests package to interact with the web and had no issues in the past. Recently when using a script that I haven't used for about a week I encountered the following error while doing a routine requests.get() call:

LocationValueError: No host specified.

Background Research

After a lot of googling various permutations of python requests LocationValueError, python requests no host error and python urllib3 LocationValueError (according to the stack trace the error is raised by urllib3 which requests uses underneath) I only managed to find this information buried in the urllib3 documentation:

exception urllib3.exceptions.LocationValueError

Raised when there is something wrong with a given URL input.

What I've tried

Thinking something might be wrong with my version of the requests package as this is arguably one of the most basic calls used in the requests package I did the following:

  • Reinstalled requests
  • Created a virtual environment and installed requests using pip
  • Installed requests from source
  • Installing urllib3 expicitly
  • Installed python 3.4 from source then tried that (I use python3.5 at the moment)

In all instances I used the following code to see whether requests was still throwing the LocationValueError:

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

Which has always worked in the past. I checked on a different computer (an ubuntu laptop) and it works there, leading me to think that the issue is specific to my computer.

Stack Trace of the Problem

Here is the stack trace I got when using requests installed in a virtualenv and with 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.

If anyone can help explain the cause of the error or point me in the right direction that'd be most appreciated. This issue also happens when I'm using a request.Session object to get pages for an extended session.

3
  • do you have any local dns configurations? like custom hosts or something? proxy? firewall? Commented Nov 30, 2015 at 8:33
  • I've used a VPN in the past but I still get the error even when it's deactivated. Other than that I haven't changed the network configuration since I installed my OS. Commented Nov 30, 2015 at 9:02
  • Can you make a call using urllib? Asin, is this specific to requests module? And which OS are you using? Commented Dec 13, 2015 at 7:36

1 Answer 1

2

For me, the problem was that the url I was requested did a redirect to Location: https//, which is possibly not valid, but which urllib3 couldn't handle.

Sign up to request clarification or add additional context in comments.

1 Comment

how did you solve it ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.