侧边栏壁纸
  • 累计撰写 47 篇文章
  • 累计收到 2 条评论

用Python配合本地轻量大模型抓取短剧热词

2026-10-1 / 0 评论 / 0 阅读

用Python配合本地轻量大模型抓取短剧热词

昨晚改脚本到三点,翻硬盘翻到之前写的抓短剧热词的小工具,刚好有人问我怎么不用付费API就能做热词统计,干脆把步骤记下来。

先把依赖装对

我这边用的是Python3.10,之前试过更高版本装lxml卡了好久,退回来就顺了,别追最新版本,能用就行。首先装需要的Python库:

pip install requests beautifulsoup4 ollama lxml

然后去ollama官网下个客户端,装完拉个轻量的开源模型就行,普通笔记本别上来就选大参数量的,跑着累,我自己用的是qwen2:1.5b,命令行敲这行等它拉完:

ollama run qwen2:1.5b

模型拉完会自动进对话界面,直接输/exit退出来就行,后台服务会自己挂着。

核心代码没几行

逻辑特别简单,说白了就是先抓公开的短剧榜单页标题,再丢给本地运行的大模型提炼核心题材关键词,最后存成csv表格就行,不用搭数据库,不用搞复杂框架。

import requests
from bs4 import BeautifulSoup
import csv
import time
import ollama

# 记得换成自己浏览器的UA,不然容易被拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
# 这里换成你要抓的公开榜单地址
res = requests.get("目标榜单页URL", headers=headers, timeout=10)
soup = BeautifulSoup(res.text, "lxml")
# CSS选择器自己按页面结构改,F12选元素右键就能复制
title_list = [i.text.strip() for i in soup.select(".榜单标题对应的选择器")]

def extract_keyword(text):
    resp = ollama.chat(
        model="qwen2:1.5b",
        messages=[{"role":"user","content":f"提取以下短剧标题里的核心题材关键词,输出3个以内,不要多余内容:{text}"}]
    )
    return resp["message"]["content"]

# 结果存到csv
with open("drama_keywords.csv", "w", encoding="utf-8-sig", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["短剧标题", "核心关键词"])
    for title in title_list:
        time.sleep(2) # 请求间隔留几秒,别太猛
        writer.writerow([title, extract_keyword(title)])
提醒一句:只抓公开可访问的榜单内容就行,别碰需要登录、有反爬强校验的页面,请求间隔留够,我之前没加延时,IP被封了好一阵,不值当。

几个踩过的小坑

  • 选模型别贪大,1.5B参数量的做关键词提炼完全够用,这个我还没细测准确率,反正自己找选题筛方向足够,更大的模型响应速度看设备,普通本扛着费劲
  • 代码里的CSS选择器别直接抄我的,每个网站页面结构都不一样,自己F12定位最稳
  • 要是碰到动态渲染的页面(就是源码里看不到标题内容的那种),把requests换成playwright就行,核心逻辑不用动,多装个包的事

哦对,跑的时候要是报依赖错,先检查Python版本是不是在3.9-3.11区间,别一上来就搜半天攻略,大部分问题都是版本不兼容闹的。自己找选题用用得了,别拿去搞批量爬取商用哈。

评论一下?

OωO
取消