亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么有的圖片url只能在html<img src="urllink">中顯示,但無法在瀏覽器中直接

為什么有的圖片url只能在html<img src="urllink">中顯示,但無法在瀏覽器中直接

慕容3067478 2023-09-04 16:25:11
最近,我試圖從網站下載一些圖像。我在 html 中搜索顯示的圖像元素。然后,我在新選項卡上打開圖像網址,但它返回 403 禁止頁面。我復制該字符串并將其插入到另一個頁面的html中,圖像可以成功顯示。我想請教一下是什么原因,以及如何下載圖片。(我正在嘗試通過 python request.get() 下載它)謝謝。
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

Referer當您請求圖像時,此 Web 服務器會檢查標頭。要成功下載圖像,必須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)...


查看完整回答
反對 回復 2023-09-04
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

有些網站會在沒有用戶代理的情況下阻止請求,請嘗試以下操作:


headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

requests.get(url, headers=headers)

查看完整回答
反對 回復 2023-09-04
  • 2 回答
  • 0 關注
  • 188 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號