前言
在当今这个数据洪流的时代,每分每秒都有海量信息在全球网络的脉络间穿梭。如何在浩瀚的信息海洋中脱颖而出,成为众多内容创作者面临的首要挑战。正是洞察这一需求,"智驭信息潮流:Python爬虫融合AI,解锁夺目标题创意新纪元" 应运而生。这篇指南将带您探索技术的前沿,揭示如何巧妙结合Python爬虫的强大抓取能力与人工智能的深度学习智慧,共同解码吸引眼球的标题艺术。我们将揭开精准数据挖掘与智能内容创造的神秘面纱,教会您如何在瞬息万变的数字世界中,以独特而富有创意的标题,引领潮流,捕获每一个浏览者的心。
1.获取AI密钥
我们访问阿里云AI dashscope.aliyun.com/ 网站,注册登录成功之后点击控制台。
然后获取API密钥
记得保存哦,这在我们后面操作时会发挥作用。
2.引入库
我们将在谷歌colab上进行操作。
yaml
# python http 请求库
!pip install requests
# python dom 查找
!pip install beautifulsoup4
requests
是Python中用于发送HTTP请求的最简单易用的库之一。它允许你以非常直观的方式进行网络请求
BeautifulSoup
是一个用于解析HTML和XML文档的Python库,它构建在解析器(如lxml、html.parser等)之上,提供了一个简易的、面向对象的API来导航、搜索、提取数据。
看到这里就说明我们响应成功啦!
3.进行页面信息抓取
ini
import requests # 导入requests库,用于发送HTTP请求
from bs4 import BeautifulSoup # 导入BeautifulSoup库,用于解析网页内容
def fetch_movie_list(url): # 定义一个函数fetch_movie_list,参数为url
headers = { # 设置请求头信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0' # 模拟浏览器请求的User-Agent
}
response = requests.get(url, headers=headers) # 发送GET请求至指定url,携带请求头headers
if response.status_code == 200: # 判断请求是否成功(HTTP状态码为200)
soup = BeautifulSoup(response.text, 'html.parser') # 使用BeautifulSoup解析返回的网页内容
movie_list = [] # 初始化一个空列表用于存储电影信息
movies = soup.select('#wrapper #content .article .item') # 使用CSS选择器定位到电影条目元素
# print(len(movies)) 注释掉的代码,原本用于打印选取的电影条目数量
all_movies_text = ''.join([movie.prettify() for movie in movies[:2]]) # 将前两个电影条目的BeautifulSoup对象转换为字符串并连接起来
# print(all_movies_text) 注释掉的代码,原本用于打印合并后的电影信息文本
return all_movies_text # 返回处理后的电影信息文本
else:
print('Failed') # 请求失败时打印"Failed"
url = 'https://movie.douban.com/chart' # 豆瓣电影排行榜URL
movies = fetch_movie_list(url) # 调用定义的函数获取电影信息
print(movies) # 打印出获取的电影信息
这段代码的作用是从豆瓣电影排行榜网页(https://movie.douban.com/chart
)上抓取并解析前两部电影的信息。让我们分3步走:
-
导入所需库:
requests
库用于发送HTTP请求,获取网页内容。BeautifulSoup
库用于解析HTML文档,提取所需数据。
-
定义函数
fetch_movie_list(url)
:-
设置请求头 (
headers
): 包含伪装成一个常见的浏览器User-Agent字符串,让服务器误以为请求来自一个正常的浏览器。 -
发送请求 : 使用
requests.get(url, headers=headers)
发送GET请求到指定的URL。 -
检查响应状态 : 如果响应的
status_code
为200,表示请求成功。- 解析内容 : 使用
BeautifulSoup(response.text, 'html.parser')
解析网页内容。 - 初始化变量 : 创建空列表
movie_list
和使用CSS选择器选取电影元素#wrapper #content .item
下的所有.item
。 - 提取前两部电影信息 : 将前两部电影的BeautifulSoup对象通过
prettify()
转化为格式化的字符串并拼接成all_movies_text
。 - 返回结果或失败提示 : 成功则返回
all_movies_text
,否则打印"Failed"。
- 解析内容 : 使用
-
-
调用函数抓取并打印电影信息:
- 设置URL为豆瓣电影排行榜的地址。
- 调用
movies = fetch_movie_list(url)
获取电影信息。 - 打印出
print(movies)
抓取到的电影信息。
成功之后,我们会出现如下
4.提供prompt
ini
prompt = f"""
{movies}
这是一段电影列表,请获取电影名(name),封面链接(picture),简介(info),评分(score),评论人数(commentsNumber),
请使用括号的单词作为属性名,以JSON数组的形式返回
"""
我们要定义和AI交互的内容.
5.交互AI
ini
import dashscope # 导入dashscope库,用于调用通义的AI交互功能
dashscope.api_key = '自己的密钥' # 设置dashscope的API密钥,用于认证和授权
def call_qwen_with_prompt(): # 定义一个函数来调用Qwen并传递提示
messages = [ # 初始化消息列表,包含一个字典
{ # 第一条消息的定义
'role': 'user', # 角色为'user',表示这是用户发送的消息
'content': prompt # 使用之前定义的prompt变量,存放用户输入的提示内容
} # 结束第一条消息字典
] # 结束消息列表
response = dashscope.Generation.call( # 用dashscope的Generation模块调用方法
dashscope.Generation.Models.qwen_turbo, # 指定模型为qwen_turbo,一个预训练好的模型
messages=messages, # 传入前面定义好的消息列表
reasult_messages='message' # 设置返回的消息类型为'message'
) # 结束调用
print(response) # 打印调用后的响应结果
call_qwen_with_prompt() # 最后调用定义的函数
步骤如下:
-
导入dashscope库:
- 引入dashscope库,这是一个封装了与DashScope平台交互的Python库,用于调用AI模型完成自然语言处理等任务。
-
设置dashscope.api_key:
- 通过设置dashscope的API密钥,这是访问Dash API接口的认证凭证,确保请求能够被正确授权。
-
定义
call_qwen_with_prompt
函数:-
这个函数用来构造和发送用户给AI的请求,并接收处理结果。
-
messages: 初始化一个消息列表,包含一条消息字典,指明这是一个用户('role':'user')发送的内容。
-
dashscope.Generation.call: 使用dashscope的Generation模块调用方法来与AI模型交互。
- dashscope.Generation.Models.qwen_turbo: 指定使用的AI模型名为wen_turbo,这是一个预训练好的模型专门处理特定任务的模型。
- messages=messages: 传入构造好的用户消息给模型处理。
- reasult_messages='message' : 指定返回的结果类型,期望是处理后的消息形式。
-
print(response) : 打印出AI模型处理后的响应内容,可能是回答、分析结果等。
-
-
调用
call_qwen_with_prompt()
: 直接调用定义好的函数,启动整个流程,实际发送请求并打印出AI的响应。
成功之后我们会得到如下结果(尤其注意状态码要200!)
恭喜你,我们又玩转了一次大模型!