Этот веб-сервер проверяет заголовок Referer
при запросе изображения. Чтобы успешно загрузить изображение, Referer
должна быть страницей, на которой находится изображение. Это не заботится о User-Agent
. Я предполагаю, что изображение появилось, когда вы поместили его на другую страницу, потому что ваш браузер кэшировал изображение и фактически не запрашивал его снова с сервера.
Используя инструмент мониторинга сети вашего браузера, вы можете увидеть, как ваш браузер получил URL изображения. В этом случае URL не был частью оригинального документа html. Ваш браузер выполнил некоторые JavaScript, которые распаковали URL и вставили элемент img
в элемент div
с id="mangaBox"
. Из-за этого вы не можете использовать vanilla requests
, так как он не выполняет JavaScript. Я использовал Requests- HTML.
Приведенный ниже код загружает изображение по ссылке, указанной в вашем комментарии, и сохраняет его на диск:
import os, urllib
from requests_html import HTMLSession
session = HTMLSession()
session.headers.update({"User-Agent": r"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",
"Referer": r"https://tw.manhuagui.com/comic/35275/481200.html"
})
url = r"https://tw.manhuagui.com/comic/35275/481200.html"
response = session.get(url)
print(response, len(response.content))
response.html.render()
img = response.html.find("img#mangaFile", first=True)
print("img element:", img)
url = img.attrs["src"]
print("image url:", url)
response = session.get(url)
print(response, len(response.content))
filename = os.path.basename(urllib.parse.urlsplit(url).path)
print("filename:", filename)
with open(filename, "wb") as f:
f.write(response.content)
Вывод:
<Response [200]> 6715
img element: <Element 'img' alt='在地下城寻找邂逅难道有错吗? 第00话' id='mangaFile' src='https://i.hamreus.com/ps3/z/zdxcxzxhndyc_sddc/第00话/P0018.jpg.webp?cid=481200&md5=aAAP75PBy9DIa0bb8Hlwfw' class=('mangaFile',) data-tag='mangaFile' style='display: block; transform: rotate(0deg); transform-origin: 50% 50% 0px;' imgw='907'>
image url: https://i.hamreus.com/ps3/z/zdxcxzxhndyc_sddc/第00话/P0018.jpg.webp?cid=481200&md5=aAAP75PBy9DIa0bb8Hlwfw
<Response [200]> 186386
filename: P0018.jpg.webp
Для чего бы то ни было, целая куча URL-адресов изображений, в дополнение к основному изображению текущей страницы, упакованы в последний элемент script
исходного документа html .
<script type="text/javascript">window["\x65\x76\x61\x6c"](function(p,a,c,k,e,d)...