爬虫任务
有一个爬取小红书上视频内容并且分析的任务,下面是一个简单可以运行的demo。
注意加载环境变量,这里的.env表示读取相同路径下.env里面的ARK_API_KEY
c
import os
from volcenginesdkarkruntime import Ark
from dotenv import load_dotenv
# 加载环境变量
env_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(env_path)
# 初始化豆包客户端
client = Ark(
base_url='https://ark.cn-beijing.volces.com/api/v3',
api_key=os.getenv('ARK_API_KEY'),
)
# 测试视频URL
video_url = "http://sns-video-hs.xhscdn.com/stream/1/110/259/01e95ce6da070f66010370039b92e65e08_259.mp4"
response = client.responses.create(
model="doubao-seed-1-8-251228",
input=[
{
"role": "user",
"content": [
{
"type": "input_video",
"video_url": video_url,
"fps": 1
},
{
"type": "input_text",
"text": "请详细描述这个视频的内容。"
}
],
}
]
)
print("=" * 80)
print("响应对象类型:", type(response))
print("=" * 80)
print("\n响应对象属性:")
for attr in dir(response):
if not attr.startswith('_'):
try:
value = getattr(response, attr)
if not callable(value):
print(f" {attr}: {type(value).__name__} = {value}")
except:
pass
print("\n" + "=" * 80)
print("response.output 结构:")
print("=" * 80)
if hasattr(response, 'output') and response.output:
print(f"output 类型: {type(response.output)}")
print(f"output 长度: {len(response.output)}")
for i, item in enumerate(response.output):
print(f"\noutput[{i}] 类型: {type(item)}")
print(f"output[{i}] 属性:")
for attr in dir(item):
if not attr.startswith('_'):
try:
value = getattr(item, attr)
if not callable(value):
print(f" {attr}: {type(value).__name__} = {value}")
except:
pass
if hasattr(item, 'content') and item.content:
print(f"\n content 类型: {type(item.content)}")
print(f" content 长度: {len(item.content)}")
for j, content_item in enumerate(item.content):
print(f"\n content[{j}] 类型: {type(content_item)}")
print(f" content[{j}] 属性:")
for attr in dir(content_item):
if not attr.startswith('_'):
try:
value = getattr(content_item, attr)
if not callable(value):
print(f" {attr}: {type(value).__name__} = {value}")
except:
pass
else:
print("response.output 为空或不存在")
print("\n" + "=" * 80)
print("尝试提取文本:")
print("=" * 80)
try:
if response.output and len(response.output) > 0:
output_msg = response.output[0]
if hasattr(output_msg, 'content') and output_msg.content:
for content in output_msg.content:
if hasattr(content, 'text'):
print(f"找到文本: {content.text[:200]}...")
break
except Exception as e:
print(f"提取失败: {e}")
提取的内容为:
output[1] 类型: <class 'volcenginesdkarkruntime.types.responses.response_output_message.ResponseOutputMessage'>
output[1] 属性:
content: list = [ResponseOutputText(type='output_text', text='这个视频是小红书平台的趣味内容,围绕"图书馆的桌子怎么搬进来"展开,内容分段如下:\n\n0-4秒:画面呈现图书馆学习区域,前景是摆满学习用品的桌面------写有笔记的本子、黄色边框平板、咖啡杯、卡通图案笔筒、白色鼠标等,背景有一位女生在整理物品;配文和顶部标题接连抛出疑问:"你们说图书馆这么多张桌子""真的是一张一张搬进来的吗?""图书馆这么多桌子咋搬进来的"。\n\n5-6秒:切换到评论区,展示第一条网友评论:"不学你就回宿舍",发布地为山东,获2091个赞,可展开81条回复,下方同步配有对应字幕。\n\n7-9秒:展示第二条评论:"不想学把手机电脑平板充满电就回宿舍吧"(附带彩虹表情),发布地为上海,获5.4万赞,可展开625条回复;中间插入吐舌头的猫猫表情包,配文字"嘿嘿嘿",呼应评论的调侃语气。\n\n10-13秒:展示第三条评论:"宿舍门这么小 床又是怎么搬进来的"(搭配带问号的白色小人表情包),发布地为广东,获2164个赞;下方还有一条搞笑回复:"床小时候搬进来的",延续趣味调侃的风格。\n\n14-17秒:展示第四条评论:"搬一个,然后啃臭加v啃臭加c复制粘贴",是电脑快捷键"Ctrl+C、Ctrl+V"的谐音梗,发布地为湖北,获2442个赞,可展开46条回复;最后画面是两个紧挨的仓鼠脸表情包,右上角配有红色问号图案,为视频收尾,强化搞笑氛围。\n\n整个视频通过"提出疑问+展示神评论"的形式,借网友的幽默回复制造笑点,风格轻松有趣。', annotations=None)]
id: str = msg_02176839283688100000000000000000000ffffac1531daa551d8
model_computed_fields: dict = {}
model_config: dict = {'extra': 'allow', 'defer_build': True, 'protected_namespaces': ()}
model_extra: dict = {}
后记
2026年1月14日于上海,周三。