利用Python进行网页抓取与AIGC实践:豆瓣电影榜单分析自动化

前言

随着网络信息的爆炸性增长,数据抓取成为了获取宝贵资源的重要手段之一。本文将结合Python的requests库与BeautifulSoup库,演示如何自动化抓取豆瓣电影排行榜的数据,并通过阿里云的通义千问(Qwen)大模型,实现对抓取数据的进一步处理与解析,展示AI生成内容(AIGC)的实用价值。让我们一起探索技术如何让数据处理变得更加高效和智能化。

技术栈简介

  • requests: Python中最常用的HTTP库,用于发送HTTP请求,获取网页内容。
  • BeautifulSoup: HTML和XML解析库,帮助我们从网页源码中提取所需信息,构建DOM树进行便捷查询。
  • 通义千问(Qwen) : 阿里云开发的大型语言模型,能够理解和生成高质量的多领域文本,适用于各类文本生成任务。

实战演练

第一步:网页抓取

首先,我们通过requests.get()方法,配合伪装的User-Agent,成功向豆瓣电影榜单发起请求,获取了网页HTML内容。接着,利用BeautifulSoup解析这些内容,选取了页面中包含电影条目的特定DOM元素。这一步骤展示了基础的网页爬虫技术,是数据收集的起点。

yaml 复制代码
# python http请求库
!pip install requests
# python dom 查找
!pip install beautifulsoup4
ini 复制代码
Python
import requests
from bs4 import BeautifulSoup

def fetch_movie_list(url):
    headers = {'User-Agent': 'Mozilla/5.0 ...'}
    response = requests.get(url, headers=headers)
   
   if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')
        movies = soup.select('#wrapper #content .article .item')
        return ''.join([movie.prettify() for movie in movies])
    else:
        print("Failed to retrieve content")

输出结果

第二步:构造Prompt

这段代码创建了一个字符串prompt,其中包含了之前从豆瓣电影排行榜抓取到的电影列表信息(通过movies变量)。紧随其后是一段指令文本,明确告诉AI模型需要执行的操作:从给定的电影列表中提取每部电影的名称、封面链接、简介、评分和评论人数,并要求模型将这些数据组织成一系列JSON对象,每个对象对应一部电影的信息,最后构成一个JSON数组返回。

ini 复制代码
prompt = f""" {movies} 这是一段电影列表,请获取电影名(name),封面连接(picture)
,简介(info),评分(score),评论人数(commentsNumber),请使用括号的单词作为属性名,以
JSON数组的格式返回 """ 
print(prompt)
第三步:数据解析与AIGC介入

抓取到的原始HTML数据虽富含信息,但直接阅读不便。我们利用通义千问(Qwen),将抓取的电影列表信息转换成结构化的JSON格式,提取出每部电影的名称、封面链接、简介、评分及评论人数。通过构造特定的指令性Prompt,Qwen能理解并执行高级文本处理任务,如提取关键信息、格式化输出等,展现了AIGC的强大灵活性和实用性。 注意: 使用的通义千问API(通过dashscope库)需要您已经注册了阿里云账号并获取了相应的API密钥。 开通和获取通义千问的API-KEY教程如下:

如何开通DashScope并创建API-KEY_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)

yaml 复制代码
#下载通义千问
!pip install dashscope
ini 复制代码
Python
dashscope.api_key = 'your_api_key_here'
def call_qwen_with_prompt(prompt):
    messages = [{'role': 'user', 'content': prompt}]
    response = dashscope.Generation.call(dashscope.Generation.Models.qwen_turbo, messages=messages, result_message='messages')
    print(response)

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

结果展示

结论

本文通过一个简单的实战案例,展示了从网页数据抓取到利用AIGC技术进行高级文本处理的全过程。Python以其丰富的库生态和易用性,成为数据采集和预处理的理想工具,而结合通义千问等大型语言模型,可以进一步挖掘数据价值,实现信息的快速提取与转化。这种技术组合不仅提升了数据分析的效率,也为内容创作、信息摘要等领域开启了新的可能

若有不足,恳请各位大佬指出

相关推荐
小政爱学习!13 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
魏大帅。18 分钟前
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
前端·javascript·ajax
花花鱼24 分钟前
vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法
前端·javascript·elementui
k093328 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning1 小时前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人1 小时前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
超雄代码狂1 小时前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石1 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程2 小时前
【前端基础】CSS基础
前端·css