梦境 (Wonderland) – 韩国电影 – 汤唯 – 裴秀智 – AI爬虫数据提取测试

释放双眼,带上耳机,听听看~!
这篇文章介绍了一次将大模型能力与爬虫结合,测试数据提取能力的过程中涉及的电影《梦境》(Wonderland),主演汤唯和裴秀智,以及AI爬虫的玩法。

最近在学习大模型,之前我是干过一段时间爬虫,在学习大模型的过程中,突发奇想能不能把大模型的能力结合爬虫,搞个AI爬虫玩一玩。

说干就干,先测试一下大模型的数据提取能力

<table width="100%" class="">
    <tbody><tr class="item">
        <td width="100" valign="top">
                <a class="nbg" href="https://movie.douban.com/subject/34453198/&#34;   title="梦境">
                    <img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2910694617.webp&#34;   width="75" alt="梦境" class="">
                </a>
        </td>
        <td valign="top">    
            <div class="pl2">
                <a href="https://movie.douban.com/subject/34453198/&#34;   class="">
                    梦境
                    / <span style="font-size:13px;">仙境 / Wonderland</span>
                </a>
                <p class="pl">2024-06-05(韩国) / 汤唯 / 裴秀智 / 朴宝剑 / 郑有美 / 崔宇植 / 孔刘 / 鲍起静 / 崔武成 / 全秀芝 / 韩国 / 金泰勇 / 113分钟 / 梦境 / 剧情 / 爱情 / 科幻 / 金泰勇 Tae-Yong Kim / 韩语 / 英语 / 汉语普通话</p>             
                    <div class="star clearfix">
                            <span class="allstar30"></span>
                            <span class="rating_nums">6.4</span>
                            <span class="pl">(6899人评价)</span>
                    </div>
            </div>

        </td>
    </tr>
</tbody></table>

<table width="100%" class="">
    <tbody><tr class="item">
        <td width="100" valign="top">
                <a class="nbg" href="https://movie.douban.com/subject/36085987/&#34;   title="犯罪都市4">
                    <img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2903301473.webp&#34;   width="75" alt="犯罪都市4" class="">
                </a>
        </td>
        <td valign="top">
            <div class="pl2">
                <a href="https://movie.douban.com/subject/36085987/&#34;   class="">
                    犯罪都市4
                    / <span style="font-size:13px;">犯罪都市:铁拳清算(港) / The Roundup: Punishment</span>
                </a>
                <p class="pl">2024-02-23(柏林电影节) / 2024-04-24(韩国) / 马东锡 / 金武烈 / 李东辉 / 朴智焕 / 李主傧 / 金敏载 / 金英熊 / 韩国 / 许明行 / 110分钟 / 犯罪都市4 / 动作 / 犯罪 / 惊悚 / 吴相浩 Sang-ho Oh / 韩语 / 英语 / 菲律宾语 / 汉语普通话</p>
                    <div class="star clearfix">
                            <span class="allstar35"></span>
                            <span class="rating_nums">6.6</span>
                            <span class="pl">(23916人评价)</span>
                    </div>
            </div>
        </td>
    </tr>
</tbody></table>

我们将这段HTML交给大模型,让大模型帮我们提取其中的数据,其中提示词是

这是一段电影列表,去获取电影名(name),封面链接(picture),简介(info),评分(score), 评论人数(commetsNumber),请使用括号的单词作为属性名,以JSON数组的格式返回

这是大模型的返回结果

[    {        "name": "梦境",        "picture": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2910694617.webp",        "info": "2024-06-05(韩国) / 汤唯 / 裴秀智 / 朴宝剑 / 郑有美 / 崔宇植 / 孔刘 / 鲍起静 / 崔武成 / 全秀芝 / 韩国 / 金泰勇 / 113分钟 / 梦境 / 剧情 / 爱情 / 科幻 / 金泰勇 Tae-Yong Kim / 韩语 / 英语 / 汉语普通话",        "score": "6.4",        "commentsNumber": "6899人评价"    },    {        "name": "犯罪都市4",        "picture": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2903301473.webp",        "info": "2024-02-23(柏林电影节) / 2024-04-24(韩国) / 马东锡 / 金武烈 / 李东辉 / 朴智焕 / 李主傧 / 金敏载 / 金英熊 / 韩国 / 许明行 / 110分钟 / 犯罪都市4 / 动作 / 犯罪 / 惊悚 / 吴相浩 Sang-ho Oh / 韩语 / 英语 / 菲律宾语 / 汉语普通话",        "score": "6.6",        "commentsNumber": "23916人评价"    }]

发现可以提取到数据,那么接下来我们去写代码


import requests
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()

# 需要写自己的api_key  还需要科学上网
client = OpenAI()


url = "https://movie.douban.com/chart"

header = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=header)
# print(response)
# print(response.text)



def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,  # 模型输出的随机性,0 表示随机性最小
    )
    return response.choices[0].message.content

# 我这里是把所有获取的到的页面HTML都交给了大模型,可能token数量会超
prompt = "{} 这是一部电影的html片段。获取需要电影名(name),封面链接(picture),简介(info), 评分(score),评论人数(commentsNumber)。 请使用括号的单词作为属性名,以JSON数组的格式返回".format(response.text)

print(get_completion(prompt))

这段代码就是去获取页面HTML,然后交给大模型去提取数据,大家自己做测试的时候,可以把HTML的范围缩小一点,不然token可能会超

但是这段代码是比较粗糙的,就在我觉得这个事情搞不下去的时候,搜了一下有没有这方面的框架,别说,还真让我搜到了ScrapeGraphAI

github地址:github.com/ScrapeGraph…

根据他的文档写了一个案例

import os
from dotenv import load_dotenv
from scrapegraphai.graphs import SmartScraperGraph
from scrapegraphai.utils import prettify_exec_info
import json

# 从.env加载环境变量
load_dotenv()

# 从环境变量加载openai key
openai_key = os.getenv("OPENAI_APIKEY")

# 配置SmartScraperGraph
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "gpt-3.5-turbo",
   },
}

# 创建SmartScraperGraph并运行
smart_scraper_graph = SmartScraperGraph(
   prompt="获取需要电影名(name),封面链接(picture),简介(info), 评分(score),评论人数(commentsNumber)。 请使用括号的单词作为属性名,以JSON数组的格式返回",
   # 接收一个html网页页面
   source="https://movie.douban.com/chart",
   config=graph_config
)

# 执行爬虫并保存结果
result = smart_scraper_graph.run()
with open("results.json", 'w', encoding='utf-8') as f:
      json.dump(result, f, indent=4)

这个框架,发送请求、数据提取,全都交给了大模型去处理,整体代码非常的简洁,只需要url地址和提示词(prompt)就可以了,非常的nice啊,目前还没有测试有反爬虫的网站,大家可以测试一下

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

ChatGPT + ComfyUI 实战:创造一款卡牌游戏完整攻略

2024-10-19 17:23:00

AI教程

Iphone Mirroring实现AI打DNF手游的技术路径与训练模型

2024-10-19 17:27:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索