likes
comments
collection
share

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

作者站长头像
站长
· 阅读数 31

前言

在当今信息爆炸的时代,数据如同隐藏在网络世界中的宝藏,等待着我们去发掘。而 Colab 平台为我们提供了一个便捷且强大的环境,让我们能够运用 Python编程语言展开探索。

在这里,我们可以实现网络爬虫的开发,以豆瓣电影网站的电影列表信息为目标,精准地获取我们所需的数据。当我们获取到这些海量的电影信息后,借助先进的 AI 模型。通过 AI 模型的智慧处理,这些原本杂乱无章的信息将被转化为结构化数据。

这不仅是技术的融合与创新,更是一次对数据价值的深度挖掘与升华。

正文

Colab

什么是Colab呢?

Colab(全称为Colaboratory)是Google提供的一项免费的云端服务,它允许用户无需在本地设备上配置任何环境,即可直接在浏览器中编写和运行Python代码。

Colab是一个完全基于云端的环境,这意味着所有计算和存储都在Google的服务器上进行,用户无需担心本地资源限制。

Colab平台传送门——colab.research.google.com/

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

如何使用Colab

  1. 想要访问Colab的话,则需要有一个谷歌账号。
  2. 登录后,你可以创建新的空白笔记本或上传已有的Jupyter笔记本文件。
  3. 在笔记本中,可以编写Python代码并立即运行。

网络爬虫与AI的结合

环境搭建与库导入

通过pip install命令安装requestsbeautifulsoup4库。

requests用于发送HTTP请求,beautifulsoup4用于解析HTML页面内容。

!pip install requests
!pip install beautifulsoup4

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

然后导入模块。

import requests
from bs4 import BeautifulSoup

定义数据抓取函数

定义了fetch_movie_list(url)函数,该函数负责向指定URL(豆瓣电影排行榜页面)发起HTTP GET请求,并解析返回的HTML页面以提取电影列表信息。

  • 设置请求头,模拟浏览器行为避免被服务器拒绝。

    怎么获取请求头信息呢?

    在浏览器中右键点击检查,然后找到控制台。在控制台输入window.navigator.userAgent后回车,然后复制返回的字符串填在User-Agent后面。

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

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创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

AI模型应用

利用AI模型(具体为Dashscope平台的Qwen模型)进一步处理抓取的电影列表信息,将其转化为结构化的JSON数据。

  • 构造Prompt。

    prompt = f"""
    {movies}
    这是一段电影列表html,请获取电影名(name),封面链接(picture),简介(info),评价(score),评论人数(commentsNumber),请使用括号的单词作为属性名,以JSON数组的格式返回
    """
    

    在获取到的html数据后增加一句话形成给语言模型(LLM)的提示信息。

  • 安装Dashscope模型。

    !pip install dashscope
    

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

  • 引入Dashscope模型并且设置API密钥,准备调用其API来与AI模型Qwen Turbo交互。

    import dashscope
    dashscope.api_key = '你获取的API'
    

    怎么获取API呢?

    跟我来,传送门:dashscope.aliyun.com/

    1. 第一步:

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

  1. 第二步:

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

  1. 第三步:

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

  1. 第四步:

AI创新:利用Python与AI生成技术抓取并解析豆瓣电影榜单

一定要复制完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
评论
请登录