【问题标题】:How to download image with a long URL length?如何下载具有长 URL 长度的图像?
【发布时间】:2020-01-08 19:24:29
【问题描述】:

我正在尝试从“https://prnt.sc”下载图片,但是图片的 URL 太长,打印r.content 时也找不到那个 URL。

这是我获取 HTML 的代码:

import requests
import random
import string
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}


register_data = {"path" : "luk111"}
print (register_data)

with requests.Session() as s:
    url = 'https://prnt.sc/luk111'
    r = s.post(url, json=register_data, headers=headers)
    print(r)
    print (r.content)

整个网址大约有 81954 个字符,所以我需要一个更好的方法来下载它。有什么想法吗?

这是我下载 .jpg 图片的代码:

import random
import urllib.request

def download_web_image(url):
    name = "xddd"
    full_name = "screen/" + str(name) + ".jpg"
    urllib.request.urlretrieve(url,full_name)

xd = input("paste url")

download_web_image(xd)

【问题讨论】:

  • 不是url,而是base64中的图片数据。您必须对其进行解码并将其写入文件 - 然后您将获得图像。

标签: python html python-requests urllib


【解决方案1】:

页面上的这个长url不是真实的url,而是base64中的图片数据

但首先我在网络浏览器中关闭了JavaScript,然后我在没有JavaScript 的情况下检查了这个页面,因为requestsBeautifulSoup 无法运行JavaScript。

我看到了正常的图片网址,我没有问题下载它。

import requests
from bs4 import BeautifulSoup as BS

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
}

with requests.Session() as s:
    url = 'https://prnt.sc/luk111'
    r = s.get(url, headers=headers)

    soup = BS(r.content, 'html.parser')
    img_url = soup.find('img', {'id': 'screenshot-image'})['src']

    r = s.get(img_url, headers=headers)
    with open('temp.png', 'wb') as f:
        f.write(r.content)

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多