最近在学习大模型,之前我是干过一段时间爬虫,在学习大模型的过程中,突发奇想能不能把大模型的能力结合爬虫,搞个AI爬虫玩一玩。
说干就干,先测试一下大模型的数据提取能力
<table width="100%" class="">
<tbody><tr class="item">
<td width="100" valign="top">
<a class="nbg" href="https://movie.douban.com/subject/34453198/" title="梦境">
<img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2910694617.webp" width="75" alt="梦境" class="">
</a>
</td>
<td valign="top">
<div class="pl2">
<a href="https://movie.douban.com/subject/34453198/" 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/" title="犯罪都市4">
<img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2903301473.webp" width="75" alt="犯罪都市4" class="">
</a>
</td>
<td valign="top">
<div class="pl2">
<a href="https://movie.douban.com/subject/36085987/" 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大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓