Skip to content Skip to sidebar Skip to footer

Can't Download Image With Python

try to download images with python but only this picture can't download it i don't know the reason cause when i run it, it just stop just nothing happen no image , no error code .

Solution 1:

this code will work for you try to change the url that you use and see result :

import requests

pic_url = "https://www.thesun.co.uk/wp-content/uploads/2020/09/67d4aff1-ddd0-4036-a111-3c87ddc0387e.jpg"
cookies = dict(BCPermissionLevel='PERSONAL')


withopen('aa.jpg', 'wb') as handle:
        response = requests.get(pic_url, headers={"User-Agent": "Mozilla/5.0"}, cookies=cookies,stream=True)
        ifnot response.ok:
            print (response)

        for block in response.iter_content(1024):
            ifnot block:
                break

            handle.write(block)

enter image description here

Solution 2:

What @MoetazBrayek says in their comment (but not answer) is correct: the website you're querying is blocking the request.

It's common for sites to block requests based on user-agent or referer: if you try to curl https://www.thesun.co.uk/wp-content/uploads/2020/09/67d4aff1-ddd0-4036-a111-3c87ddc0387e.jpg you will get an HTTP error (403 Access Denied):

❯ curl -I https://www.thesun.co.uk/wp-content/uploads/2020/09/67d4aff1-ddd0-4036-a111-3c87ddc0387e.jpg
HTTP/2 403 

Apparently The Sun wants a browser's user-agent, and specifically the string "mozilla" is enough to get through:

❯ curl -I -A mozilla https://www.thesun.co.uk/wp-content/uploads/2020/09/67d4aff1-ddd0-4036-a111-3c87ddc0387e.jpg
HTTP/2200

You will have to either switch to the requests package or replace your url string with a proper urllib.request.Request object so you can customise more pieces of the request. And apparently urlretrieve does not support Request objects so you will also have to use urlopen:

req = urllib.request.Request(URL, headers={'User-Agent': 'mozilla'})
res = urllib.request.urlopen(req)
assert res.status == 200withopen(filename, 'wb') as out:
    shutil.copyfileobj(res, out)

Post a Comment for "Can't Download Image With Python"