Fetching data from https url with Python 3.7
1
0
Entering edit mode
5.6 years ago

Hi all,

How do I use urllib.request module in Python 3.7 to open a pdb file?

The URL I’m using is http://files.rcsb.org/download/1N5O.pdb.

I’ve read about the need for SSL support but I’m not too sure how to write a code which incorporates those principles.

Here is how my code looks like thus far:

import urllib.request req= urllib.request.Request("http://files.rcsb.org/download/1N5O.pdb")

with urllib.request.urlopen(req) as response:

          the_page= response.read()

print (the_page)

Any advice on the above would be much appreciated. Thank you!

(For more accurate formatting, I've attached my picture here in [1]:

https pdb • 4.1k views
ADD COMMENT
1
Entering edit mode
5.6 years ago

You wouldn't need SSL or https support to do an http GET request over an unencrypted connection.

That said, you could do something like:

#!/usr/bin/env python

import sys
import requests

url = 'http://files.rcsb.org/download/1N5O.pdb'
localFn = '1N5O.pdb'

try:
    r = requests.get(url, stream=True)
    with open(localFn, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024*1024):
            if chunk:
                f.write(chunk)
except requests.exceptions.ChunkedEncodingError as cee:
    sys.stderr.write('Error: Could not get data')
    sys.exit(-1)

See: http://docs.python-requests.org/en/master/user/advanced/ for a discussion of SSL/https GET requests.

NB: This will overwrite any existing file with the name 1N5O.pdb. Use os.path.exists if you want to do something a little more robust.

ADD COMMENT
0
Entering edit mode

Hi Alex,

Thank you very much for your help.

I have applied these to my code, and its working fine now.

Have a good week ahead.

ADD REPLY

Login before adding your answer.

Traffic: 1505 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6