Как мне обработать '403 Forbidden', ответ с чисткой Python? - PullRequest
1 голос
/ 19 июня 2019

Я удалил URL картинки, которую хочу, но я использую модуль запросов для загрузки картинки, сервер отвечает 403 Запрещено.

Я попытался захватить трафик в Chrome F12, много JSответы на главной странице и URL-адрес картинки отвечают только тип Doc

import requests

lines =[
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-001-a5f6.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-002-c60d.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-003-4b8a.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
'https://i.hamreus.com/ps4/0-9/9%E5%8F%B7%E6%9D%80%E6%89%8B%E6%B9%9B%E8%93%9D%E4%BB%BB%E5%8A%A1[%E9%AB%98%E6%A1%A5%E7%BE%8E%E7%94%B1%E7%BA%AA]/vol_02/seemh-004-87ac.jpg.webp?cid=121333&md5=7dHbKv51JwzRC6jjd7p3oQ',
]

def download_pic(url,s):
    pass
    r = s.get(url,headers = headers)
        with open(url.split('/')[-1].split('.')[0] +'.jpg','wb') as fp:
        fp.write(r.content())


def main():
    pass
    s = requests.Session()
    main_url = 'https://www.manhuagui.com/comic/12087/121333.html'
    r = s.get(main_url,headers = headers)
    for each_url in lines:
        download_pic(each_url.strip(r'\n'),s)



if __name__ == '__main__':
    main()

Я не могу загрузить картинку, которую я хочу

1 Ответ

0 голосов
/ 19 июня 2019

На некоторых веб-сайтах предусмотрена защита от запросов из внешних источников, в частности, файлов Python Вот почему вы получаете ошибку 403. Вы не сможете использовать модуль urllib или requests.

Мой обходной путь: я сделал вызов сценария оболочки из python, в котором передал URL-адрес изображения. В сценарии оболочки я использовал $1 для доступа к URL, переданному с помощью wget, чтобы загрузить изображение следующим образом:

Python:

import subprocess
subprocess.call([filename, url])

Скрипт (.sh)

wget $1
...