嗨,大家好!今天我要和你分享一个有趣的技巧——如何在小红书上下载无水印的图片。你知道吗?小红书上有很多精彩的图片,但有时候我们想要保存它们却不知道该怎么办。别担心,我将向你展示一种简单的方法,让你轻松下载这些美丽的图片,而且不会留下任何水印。接下来,让我们一起来探索这个技巧吧!
步骤 1:发起网络请求
首先,我们需要发起网络请求,获取小红书上的网页源码。为了做到这一点,我们需要使用Python编程语言以及一些库来帮助我们完成这个任务。以下是一个简单的Python函数,用于发起网络请求:
import requests
def fetchUrl(url):
headers = {
'User-Agent': '你的浏览器User-Agent',
}
r = requests.get(url, headers=headers)
return r.text
这个函数允许我们向指定的URL发起请求并返回网页源码。
步骤 2:解析网页源码
一旦我们获得了网页源码,下一步就是解析它,以便提取无水印图片的URL。我们可以使用BeautifulSoup库来处理HTML文本。以下是解析链接的代码:
from bs4 import BeautifulSoup
def parsing_link(html):
soup = BeautifulSoup(html, 'html.parser')
script = soup.find('script', string=re.compile('window\.__INITIAL_STATE__'))
# 处理字符串json数据不合理的地方
# 转换成json数据
# 获取对应字段
# 提取图片
# 调用生成以title为名的文件夹, 可自定义要保存的路径
# 提取图片
for i in imageList:
picUrl = f"https://sns-img-qc.xhscdn.com/{i['traceId']}"
yield picUrl, i['traceId'], title
这段代码解析了HTML源码,提取了无水印图片的URL以及图片的标题。
步骤 3:下载图片
现在,我们已经获得了无水印图片的URL,下一步就是下载它们。以下是下载图片的代码:
def download(url, filename, folder):
headers = {
'User-Agent': '你的浏览器User-Agent',
}
try:
r = requests.get(url, headers=headers)
# 获取图片格式
content_type = r.headers.get('Content-Type')
image_format = content_type.split('/')[-1]
# 如果 image_format 不是图片格式的后缀,则将其更改为 jpeg
if image_format not in ['jpeg', 'png', 'gif', 'bmp']:
image_format = 'jpeg'
# 根据检测到的格式保存文件
with open(f'image/{folder}/{filename}.{image_format}', 'wb') as v:
v.write(r.content)
except Exception as e:
print('图片下载错误!')
这个函数将从给定的URL下载图片,并根据检测到的格式保存文件。
步骤 4:修正文件夹命名
为了确保文件夹的命名合法,我们可以使用以下代码:
def sanitize_folder_name(name: str) -> str:
# 替换非法字符
name = re.sub(r'[<>:"/\\|?*]', '_', name)
# 删除首尾空格
name = name.strip()
# 截断过长的名称
if len(name) > 255:
name = name[:255]
return name
这个函数将文件夹名称中的非法字符替换为下划线,并确保名称长度不超过255个字符。
结语
通过以上步骤,你现在已经知道如何在小红书上下载无水印的图片了!这个技巧可以帮助你保存你喜欢的图片,而且不会留下任何水印。希望这个教程对你有所帮助!
如果你有任何问题或意见,请随时在下方留言,我将尽力回答。谢谢你的阅读!