吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3568|回复: 15
上一主题 下一主题
收起左侧

[Python 原创] 自用小红书图片视频解析

[复制链接]
跳转到指定楼层
楼主
耍賴狠優雅 发表于 2023-10-24 16:48 回帖奖励
import re
import requests
from bs4 import BeautifulSoup
import json
from PIL import Image
from io import BytesIO


def xsh_video_image():
    try:

        headers = {
            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36",
        }
        # 定义请求的URL
        url = "http://xhslink.com/PMbpHv"
        # 请替换你自己的cookie
        cookie = {
            'customerBeakerSessionId': '',
            'xsecappid': '',
            'x-user-id-creator.xiaohongshu.com': '',
            'websectiga': '',
            'galaxy_creator_session_id': '',
            'webBuild': '3.11.3',
            'galaxy.creator.beaker.session.id': '',
            'sec_poison_id': '',
            'web_session': '',
            'gid': '',
            'a1': '',
            'abRequestId': '',
            'access-token-creator.xiaohongshu.com': '',
            'cache_feeds': '[]',
            'customer-sso-sid': '',
            'customerClientId': '',
            'unread': '',
            'webId': ''}

        # 发送GET请求,并添加Cookie
        response = requests.get(url, headers=headers, cookies=cookie)
        response.raise_for_status()
        if response.text == '':
            print("解析失败")
            return
        soup = BeautifulSoup(response.text, 'html.parser')

        script = soup.find('script', string=re.compile('window\.__INITIAL_STATE__')).text

        newhtmlinfo = script.replace('window.__INITIAL_STATE__=', '').replace('undefined', 'null')
        # 转换成json数据
        result = json.loads(newhtmlinfo, strict=False)
        note = result.get('note')
        noteDetailMap = note.get('noteDetailMap')

        first_key, first_value = next(iter(noteDetailMap.items()))
        first_note = first_value.get('note')
        # 标题
        title = first_note.get('title')
        # 如果获取到的视频还是带水印那就是你的cookie获取有问题,推荐使用Cookie-Editor插件来获取
        if first_note.get('type') == 'video':
            print("类型为video")
            stream = first_note.get('video').get('media').get('stream')

            h264 = stream.get('h264')
            # 这是视频地址
            video_url = h264[-1].get('masterUrl')
            print(video_url)
        else:
            print("类型是图片")
            image_list = first_note.get('imageList')
            image_url_list_webp = []
            for image_obj in image_list:
                info_list = image_obj.get('infoList')
                for image_url in info_list:
                    if image_url.get('imageScene') == 'CRD_WM_JPG':
                        url = image_url.get('url')
                        # 这个url地址的图片是webp格式的需要自己转换一下
                        download_and_convert_webp_to_jpg(url, "c:/")

    except requests.exceptions.HTTPError as err:
        print(err)
        return "解析错误"


def download_and_convert_webp_to_jpg(url, save_path):
    """
    这个下载的自己改改吧,我的需求是做成接口的
    :param url: 图片网络地址
    :param save_path: 图片保存的位置
    :return:
    """
    response = requests.get(url)
    if response.status_code == 200:
        # 从响应内容创建PIL Image对象
        webp_image = Image.open(BytesIO(response.content))
        # 转换为JPEG格式
        webp_image = webp_image.convert("RGB")
        # 保存为JPEG文件
        webp_image.save(save_path, "JPEG")
        print(f"成功将WebP图片保存为JPEG格式:{save_path}")
    else:
        print(f"无法下载图片,状态码:{response.status_code}")
想要现成的就去我的微信小程序吧,耍赖视频助手

免费评分

参与人数 4吾爱币 +10 热心值 +3 收起 理由
wywq + 1 + 1 谢谢@Thanks!
tz_being + 1 + 1 下载到的是最低清晰度的视频
netxk + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 耍賴狠優雅 发表于 2023-10-24 16:49 |楼主
[Python] 纯文本查看 复制代码
import re
import requests
from bs4 import BeautifulSoup
import json
from PIL import Image
from io import BytesIO


def xsh_video_image():
    try:

        headers = {
            "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36",
        }
        # 定义请求的URL
        url = "http://xhslink.com/PMbpHv"
        # 请替换你自己的cookie
        cookie = {
            'customerBeakerSessionId': '',
            'xsecappid': '',
            'x-user-id-creator.xiaohongshu.com': '',
            'websectiga': '',
            'galaxy_creator_session_id': '',
            'webBuild': '3.11.3',
            'galaxy.creator.beaker.session.id': '',
            'sec_poison_id': '',
            'web_session': '',
            'gid': '',
            'a1': '',
            'abRequestId': '',
            'access-token-creator.xiaohongshu.com': '',
            'cache_feeds': '[]',
            'customer-sso-sid': '',
            'customerClientId': '',
            'unread': '',
            'webId': ''}

        # 发送GET请求,并添加Cookie
        response = requests.get(url, headers=headers, cookies=cookie)
        response.raise_for_status()
        if response.text == '':
            print("解析失败")
            return
        soup = BeautifulSoup(response.text, 'html.parser')

        script = soup.find('script', string=re.compile('window\.__INITIAL_STATE__')).text

        newhtmlinfo = script.replace('window.__INITIAL_STATE__=', '').replace('undefined', 'null')
        # 转换成json数据
        result = json.loads(newhtmlinfo, strict=False)
        note = result.get('note')
        noteDetailMap = note.get('noteDetailMap')

        first_key, first_value = next(iter(noteDetailMap.items()))
        first_note = first_value.get('note')
        # 标题
        title = first_note.get('title')
        # 如果获取到的视频还是带水印那就是你的cookie获取有问题,推荐使用Cookie-Editor插件来获取
        if first_note.get('type') == 'video':
            print("类型为video")
            stream = first_note.get('video').get('media').get('stream')

            h264 = stream.get('h264')
            # 这是视频地址
            video_url = h264[-1].get('masterUrl')
            print(video_url)
        else:
            print("类型是图片")
            image_list = first_note.get('imageList')
            image_url_list_webp = []
            for image_obj in image_list:
                info_list = image_obj.get('infoList')
                for image_url in info_list:
                    if image_url.get('imageScene') == 'CRD_WM_JPG':
                        url = image_url.get('url')
                        # 这个url地址的图片是webp格式的需要自己转换一下
                        download_and_convert_webp_to_jpg(url, "c:/")

    except requests.exceptions.HTTPError as err:
        print(err)
        return "解析错误"


def download_and_convert_webp_to_jpg(url, save_path):
    """
    这个下载的自己改改吧,我的需求是做成接口的
    :param url: 图片网络地址
    :param save_path: 图片保存的位置
    :return:
    """
    response = requests.get(url)
    if response.status_code == 200:
        # 从响应内容创建PIL Image对象
        webp_image = Image.open(BytesIO(response.content))
        # 转换为JPEG格式
        webp_image = webp_image.convert("RGB")
        # 保存为JPEG文件
        webp_image.save(save_path, "JPEG")
        print(f"成功将WebP图片保存为JPEG格式:{save_path}")
    else:
        print(f"无法下载图片,状态码:{response.status_code}")

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Kanchow + 1 + 1 谢谢@Thanks!

查看全部评分

3#
ann390 发表于 2023-10-25 14:49
4#
onluinyc 发表于 2023-10-25 23:41
5#
鹏优CX-5 发表于 2023-10-26 09:19
不知道怎么使用呢
6#
 楼主| 耍賴狠優雅 发表于 2023-10-26 09:24 |楼主
鹏优CX-5 发表于 2023-10-26 09:19
不知道怎么使用呢

python3安装依赖,运行代码,小红书分享链接替换掉代码中的url,还是不会用就去用现成的,微信小程序收耍赖助手
7#
cu4134 发表于 2023-10-27 21:49
强的,学习了
8#
HR741158 发表于 2023-10-29 00:28
开始学起来
9#
zyyszbd 发表于 2023-10-30 16:47
耍賴狠優雅 发表于 2023-10-24 16:49
[mw_shl_code=python,true]import re
import requests
from bs4 import BeautifulSoup


学习了,感谢分享
10#
banxiaqianshang 发表于 2023-10-30 17:23
感谢感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表