Search code examples
pythonweb-scrapingpython-2.7urllib2httplib2

Unable to Submit Multipart form with no file using httplib2


I need to write a script that will automatically submit the form at http://iedb.ebi.ac.uk/tools/ElliPro/iedb_input by choosing the " Protein structure (Go to step 2b)" and then entering some value in the text field named "pdbId" without uploading any file. I wrote te following script but it gives me back the same page withoutany submission occuring . What is wrong ?

 import httplib2

 http = httplib2.Http()

url = 'http://iedb.ebi.ac.uk/tools/ElliPro/iedb_input'   
body = { 'pdbFile' : '', 'protein_type':'structure','pdbId':'5LYM' }
headers = {'Content-type': 'application/x-www-form-urlencoded','User-Agent':'Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1'}
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
print content

Solution

  • I used mechanize finally and it worked !

     from mechanize import Browser, _http
     br = Browser()
     br.set_handle_robots(False)
     br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
    
     br.open('http://iedb.ebi.ac.uk/tools/ElliPro/iedb_input')
     br.select_form(name='predictionForm')
     br.form['protein_type'] = ['structure',]
     br.form['pdbId'] = '5LYM'
     submit_response = br.submit(name='Submit', label='Submit')
     print submit_response.read()