如何用BeautifulSoup获取并打印Likee主页元数据及视频链接
解决Likee用户主页数据爬取问题
Likee主页核心数据多通过JavaScript动态渲染,直接解析静态HTML无法获取目标内容,需从页面内嵌的script标签中提取初始化JSON数据,以下是可行实现方案:
实现步骤
- 携带浏览器请求头发送HTTP请求,获取页面源码
- 定位包含用户核心数据的
script标签,提取JSON字符串 - 解析JSON数据,提取所需字段
- 整理视频链接并格式化输出
完整代码
import requests from bs4 import BeautifulSoup import json # 目标用户主页URL url = "https://likee.video/@HouseofB" # 模拟浏览器请求头,避免被反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } # 获取页面源码 response = requests.get(url, headers=headers) response.encoding = "utf-8" soup = BeautifulSoup(response.text, "html.parser") # 定位存储初始化数据的script标签 script_tag = soup.find("script", id="__NEXT_DATA__") if not script_tag: print("未找到目标数据标签,页面结构可能已更新") exit() # 解析JSON数据 data = json.loads(script_tag.string) user_info = data["props"]["pageProps"]["userInfo"] video_list = data["props"]["pageProps"]["videoList"] # 提取用户核心信息 avatar_url = user_info["avatar"] username = user_info["nickname"] user_id = user_info["userId"] fans_count = user_info["fans"] likes_count = user_info["likes"] instagram_link = user_info.get("instagram", "未填写") website_link = user_info.get("externalUrl", "未填写") # 提取并拼接视频完整链接 video_urls = [f"https://likee.video/{video['videoId']}" for video in video_list] # 格式化输出结果 print("=== Likee用户信息 ===") print(f"头像链接: {avatar_url}") print(f"用户名: {username}") print(f"用户ID: {user_id}") print(f"粉丝数: {fans_count}") print(f"获赞数: {likes_count}") print(f"Instagram链接: {instagram_link}") print(f"官网链接: {website_link}") print("\n=== 视频链接列表 ===") for idx, video_url in enumerate(video_urls, 1): print(f"{idx}. {video_url}")
注意事项
- 请求头更新:若请求被拦截,需将
User-Agent替换为当前浏览器的真实标识 - 页面结构变化:Likee可能调整页面布局,若找不到
__NEXT_DATA__标签,需通过浏览器开发者工具重新定位存储用户数据的script标签 - 字段名称变更:若部分字段提取失败,可打印
user_info和video_list的完整结构,确认字段名称是否修改
内容的提问来源于stack exchange,提问作者aquatic7
相关产品推荐
相关产品推荐

