Submitting to a web form using python

post, python, request, urllib, urllib2

Solution

If you want to pass `q` as a parameter in the URL using `requests`, use the `params` argument, not `data` (see Passing Parameters In URLs):

r = requests.get('http://stackoverflow.com', params=data)

This will request https://stackoverflow.com/?q=%5Bpython%5D , which isn't what you are looking for.

You really want to `POST` to a form. Try this:

r = requests.post('https://stackoverflow.com/search', data=data)

This is essentially the same as `GET`-ting https://stackoverflow.com/questions/tagged/python , but I think you'll get the idea from this.

Problem

I have seen questions like this asked many many times but none are helpful Im trying to submit data to a form on the web ive tried requests, and urllib and none have worked for example here is code that should search for the [python] tag on SO: ``` import urllib import urllib2 url = 'http://stackoverflow.com/' # Prepare the data values = {'q' : '[python]'} data = urllib.urlencode(values) # Send HTTP POST request req = urllib2.Request(url, data) response = urllib2.urlopen(req) html = response.read() # Print the result print html ``` yet when i run it i get the html soure of the home page here is an example of using requests: ``` import requests data= { 'q': '[python]' } r = requests.get('http://stackoverflow.com', data=data) print r.text ``` same result! i dont understand why these methods arent working i've tried them on various sites with no success so if anyone has successfully done this please show me how! Thanks so much!

Original source