AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单
前言
在当今信息爆炸的时代,数据如同隐藏在网络世界中的宝藏,等待着我们去发掘。而 Colab 平台为我们提供了一个便捷且强大的环境,让我们能够运用 Python编程语言展开探索。
在这里,我们可以实现网络爬虫的开发,以豆瓣电影网站的电影列表信息为目标,精准地获取我们所需的数据。当我们获取到这些海量的电影信息后,借助先进的 AI 模型。通过 AI 模型的智慧处理,这些原本杂乱无章的信息将被转化为结构化数据。
这不仅是技术的融合与创新,更是一次对数据价值的深度挖掘与升华。
正文
Colab
什么是Colab呢?
Colab(全称为Colaboratory)是Google提供的一项免费的云端服务,它允许用户无需在本地设备上配置任何环境,即可直接在浏览器中编写和运行Python代码。
Colab是一个完全基于云端的环境,这意味着所有计算和存储都在Google的服务器上进行,用户无需担心本地资源限制。
Colab平台传送门——colab.research.google.com/
如何使用Colab
- 想要访问Colab的话,则需要有一个谷歌账号。
- 登录后,你可以创建新的空白笔记本或上传已有的Jupyter笔记本文件。
- 在笔记本中,可以编写Python代码并立即运行。
网络爬虫与AI的结合
环境搭建与库导入
通过pip install
命令安装requests
和beautifulsoup4
库。
requests
用于发送HTTP请求,beautifulsoup4
用于解析HTML页面内容。
!pip install requests
!pip install beautifulsoup4
然后导入模块。
import requests
from bs4 import BeautifulSoup
定义数据抓取函数
定义了fetch_movie_list(url)
函数,该函数负责向指定URL(豆瓣电影排行榜页面)发起HTTP GET请求,并解析返回的HTML页面以提取电影列表信息。
-
设置请求头,模拟浏览器行为避免被服务器拒绝。
怎么获取请求头信息呢?
在浏览器中右键点击检查,然后找到控制台。在控制台输入
window.navigator.userAgent
后回车,然后复制返回的字符串填在User-Agent
后面。
def fetch_movie_list(url):
headers = {
'User-Agent':'输入你获取的字符串'
}
-
使用
requests.get()
方法发送请求,并检查响应状态码确保请求成功。response = requests.get(url, headers=headers)
-
如果请求成功(状态码为200),则继续处理;否则打印错误信息。
if response.status_code == 200: return else: print("Failed to retrieve content")
-
利用BeautifulSoup解析响应的HTML文本,查找特定CSS选择器(#wrapper #content .article .item后代选择器)匹配的电影列表项。
if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') movie_list = [] movies = soup.select('#wrapper #content .article .item') return else: print("Failed to retrieve content")
-
提取了部分电影条目的HTML,并以预格式化字符串形式返回前两个电影的详情。
if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') movie_list = [] movies = soup.select('#wrapper #content .article .item') all_movies_text = ''.join([movie.prettify() for movie in movies[:2]]) return all_movies_text else: print("Failed to retrieve content")
调用数据抓取函数
url = 'https://movie.douban.com/chart'
movies = fetch_movie_list(url)
让我们看看获取到的数据。
AI模型应用
利用AI模型(具体为Dashscope平台的Qwen模型)进一步处理抓取的电影列表信息,将其转化为结构化的JSON数据。
-
构造Prompt。
prompt = f""" {movies} 这是一段电影列表html,请获取电影名(name),封面链接(picture),简介(info),评价(score),评论人数(commentsNumber),请使用括号的单词作为属性名,以JSON数组的格式返回 """
在获取到的html数据后增加一句话形成给语言模型(LLM)的提示信息。
-
安装Dashscope模型。
!pip install dashscope
-
引入Dashscope模型并且设置API密钥,准备调用其API来与AI模型Qwen Turbo交互。
import dashscope dashscope.api_key = '你获取的API'
怎么获取API呢?
跟我来,传送门:dashscope.aliyun.com/
-
第一步:
-
- 第二步:
-
第三步:
- 第四步:
一定要复制完API-KEY再关闭窗口,要不然就找不到你的API-KEY了,那就要重新创建一个了。
注意!!!注意!!!注意!!!自己的API-KEY要保管好,不要乱给别人。
-
调用AI模型:定义
call_qwen_with_prompt()
函数,构造消息体包含上述Prompt,然后调用Dashscope的Generation API来生成响应。def call_qwen_with_prompt(): messages = [ { 'role':'user', 'content':prompt } ] response = dashscope.Generation.call( dashscope.Generation.Models.qwen_turbo, messages=messages, result_messages='message' ) print(response) call_qwen_with_prompt()
向指定的
qwen_turbo
模型提供了特定的消息输入,并设置了生成结果的关联方式,最后将生成的结果存储在response
变量中,然后在打印出来。
最终效果
{"output": {"text": "```json\n[\n {\n \"name\": \"对你的想象\",\n \"picture\": \"https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.jpg\",\n \"info\": \"关于你的想法 / 概念中的你\\n2024-03-16(西南偏南电影节) / 2024-05-02(美国网络) / 安妮·海瑟薇 / 尼古拉斯·加利齐纳 / 艾拉·鲁宾 / 安妮·玛莫罗 / 瑞德·斯科特 / 帕芮·马费尔德 / 乔丹·亚伦·霍尔 / 玛蒂尔达·吉安诺普洛斯 / Meg Millidge / 奇克·曼诺哈 / Ray Cham / Jaiden...\",\n \"score\": 5.9,\n \"commentsNumber\": 20050\n },\n {\n \"name\": \"哥斯拉-1.0\",\n \"picture\": \"https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2900227040.jpg\",\n \"info\": \"超大作怪獣映画 / 哥斯拉:负一\\n2023-11-01(东京国际电影节) / 2023-11-03(日本) / 神木隆之介 / 滨边美波 / 山田裕贵 / 青木崇高 / 吉冈秀隆 / 安藤樱 / 佐佐木藏之介 / 西垣匠 / 中村织央 / 谷口翔太 / 须田邦裕 / 水桥研二 / 阿南健治 / 饭田基祐 / 远藤雄弥 / 田中美央 / 桥爪功...\",\n \"score\": 6.6,\n \"commentsNumber\": 24840\n }\n]\n```", "finish_reason": "stop", "choices": null}}
这就是通过AI大模型生成的json数据。
小结
从网页数据抓取到AI辅助信息处理的全过程,体现了Python在网络爬虫开发和AI融合应用方面的强大能力。这启示了如何结合现代AI技术自动化处理和解析复杂数据,从而提高工作效率和信息提取的准确性。
转载自:https://juejin.cn/post/7369481217031176201