利用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以其丰富的库生态和易用性,成为数据采集和预处理的理想工具,而结合通义千问等大型语言模型,可以进一步挖掘数据价值,实现信息的快速提取与转化。这种技术组合不仅提升了数据分析的效率,也为内容创作、信息摘要等领域开启了新的可能

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

相关推荐
编程零零七1 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
(⊙o⊙)~哦3 小时前
JavaScript substring() 方法
前端
无心使然云中漫步4 小时前
GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
前端·javascript
Bug缔造者4 小时前
Element-ui el-table 全局表格排序
前端·javascript·vue.js
xnian_4 小时前
解决ruoyi-vue-pro-master框架引入报错,启动报错问题
前端·javascript·vue.js
麒麟而非淇淋5 小时前
AJAX 入门 day1
前端·javascript·ajax
2401_858120535 小时前
深入理解MATLAB中的事件处理机制
前端·javascript·matlab
阿树梢5 小时前
【Vue】VueRouter路由
前端·javascript·vue.js
随笔写7 小时前
vue使用关于speak-tss插件的详细介绍
前端·javascript·vue.js
史努比.7 小时前
redis群集三种模式:主从复制、哨兵、集群
前端·bootstrap·html