人生苦短,我用 Python,AI 模型助力高效数据提取


theme: channing-cyan

一、前言

在网络爬虫和数据挖掘领域,提取网页内容是一项常见且重要的任务。无论是从新闻网站、电商平台还是社交媒体,获取有用的信息都是开展后续分析和应用的前提。然而,传统的网页内容提取需要编写大量的代码来处理和解析 HTML 文档,费时费力且容易出错。幸运的是,随着人工智能技术的发展,我们可以借助 AI 模型来简化这一过程。

在本文中,我将分享如何利用 Python 中的 requests 库和 beautifulsoup4 库从网页中提取电影信息,并利用 AI 模型生成相应的提示信息的实践经验。AI 模型在其中的重要性不言而喻,它能够自动识别并生成文本,帮助我们节省大量的时间和精力。

首先,我们将使用 requests 库发送 HTTP 请求获取网页内容,然后利用 beautifulsoup4 库解析 HTML 文档,提取所需的电影信息。接着,我们将使用 dashscope 包与 AI 模型进行交互,让模型为我们生成电影信息的提示。通过这个实例,你将了解到如何利用 Python 中强大的工具和现成的 AI 模型,轻松实现网页内容的提取与处理。

二、准备工作

1. 获取API-KEY

阿里云的模型服务灵积DashScope免费获取一个API-KEY去免费使用大模型,步骤如下:

链接:https://dashscope.aliyun.com/ ,需要注册登入。

点击立即开通

模型API调用里第二个创建API-KEY

创建新的 API-KEY

创建后,会跳出来一个框框,里面有串代码,复制完保存到你找的到的地方,后面需要使用到。

2. 会简单使用colab平台

链接:https://colab.research.google.com/ ,需要谷歌账号

好处:写python代码时能够很轻松的安装一些复杂的库,就一串代码就能搞定。

创建好后就可以开始写代码了

三、代码

每一段代码都需运行

1. 第一段代码:

# python http请求库
!pip install requests
# python dom 查找
!pip install beautifulsoup4
  1. 直接安装了 Python 中用于发送 HTTP 请求的 requests 库。
  2. 直接安装了 Python 中用于解析 HTML 文档的 beautifulsoup4 库。(这就是colab的一个好处,速度还快

这两个库的安装是为了后续的网络爬虫程序,requests 库用于发送 HTTP 请求获取网页内容,beautifulsoup4 库用于解析 HTML 文档,提取所需信息。安装这两个库后,你可以在代码中导入它们并使用它们的功能。

2. 第二段代码:

# 引入请求库 模块化为复用,封装而来
# 函数级化 类 文件 架构
import requests # node require
from bs4 import BeautifulSoup

def fetch_movie_list(url):

设置HTTP 请求头

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’
}

js有什么区别 js是异步 Python是同步

response = requests.get(url, headers=headers)

状态码 成功

if response.status_code == 200:
# 内存中的dom对象
soup = BeautifulSoup(response.text, ‘html.parser’)
movie_list =
movies = soup.select(‘#wrapper #content .article .item’)
# python 不是完全面向对象的,而更年轻的js 是完全面向对象
# 2.3123.foFixed(2) ‘123’.length
# 突兀
# print(len(movies))
# 字符串
# 人生苦短 我用python 突出简洁
all_movies_text = ‘’.join([movie.prettify() for movie in movies[:2]])
# print(all_movies_text)
return all_movies_text
else:
print(“Failed to retrieve content”)

url = ‘豆瓣电影排行榜
movies = fetch_movie_list(url)
print(movies)

功能:这段代码实现了一个函数 fetch_movie_list(url),用于从豆瓣电影排行榜页面获取电影信息,并返回前两部电影的 HTML 内容。

代码解析

  1. 导入了 requestsBeautifulSoup 库,用于发送 HTTP 请求和解析 HTML 页面。
  2. 定义了 fetch_movie_list(url) 函数,接收一个参数 url,表示要获取电影信息的页面链接。
  3. 设置了 HTTP 请求头,模拟了浏览器发送请求的行为,避免被目标网站识别为爬虫并阻止访问。
  4. 使用 requests.get() 方法发送 GET 请求,获取页面的 HTML 内容。
  5. 检查响应的状态码,如果状态码为 200,则表示请求成功,继续执行后续操作;否则打印出错信息。
  6. 使用 BeautifulSoup 解析 HTML 内容,将其转换为 BeautifulSoup 对象,方便后续操作。
  7. 使用 CSS 选择器 soup.select() 提取页面中的电影信息,将其存储在 movies 列表中。
  8. 遍历前两部电影的信息,使用 prettify() 方法美化 HTML 代码,并将其拼接成一个字符串 all_movies_text
  9. 最后返回前两部电影的 HTML 内容。

最后,通过调用 fetch_movie_list(url) 函数,传入豆瓣电影排行榜的链接,获取电影信息的 HTML 内容,并打印输出。

补充:js和python

# js有什么区别 js是异步 Python是同步
  response = requests.get(url, headers=headers)

与 JavaScript 不同,Python 中的 requests 库发送的 HTTP 请求是同步的,意味着代码会等待请求完成后才会继续执行后续的操作。这与 JavaScript 中的异步操作不同,JavaScript 中的网络请求通常是异步的,意味着代码会继续执行,而不会等待请求完成。

异步操作使得 JavaScript 在执行网络请求时不会阻塞其他操作,可以在等待网络请求完成的同时继续执行其他代码。这对于 Web 开发来说非常重要,因为可以在不阻塞用户界面的情况下加载数据和执行其他操作。

# python 不是完全面向对象的,而更年轻的js 是完全面向对象
    # 2.3123.foFixed(2)   '123'.length
    # 突兀
  • Python 不是完全面向对象的,而更年轻的 JavaScript 则是完全面向对象的。
  • 在 JavaScript 中,几乎所有的事物都是对象,甚至基本的数据类型也是对象。
  • 例如,使用 '123'.length 获取字符串的长度,或者使用 2.3123.toFixed(2) 来保留数字的小数位数。 而在 Python 中,基本数据类型不是对象,不能直接调用方法和属性。
  • 这使得在 Python 中使用一些方法和属性显得有些突兀,比如在数字上使用 round() 函数来保留小数位数:

3. 第三段代码

# AIGC LLM + Prompt(指令)
# es6 `` 字符串模版
# python
prompt = f"""
{movies}
这是一段电影列表html, 请获取电影名(name),封面链接(pricture),简介(info), 评分(score), 评论人数(commentsNumber),请使用括号的单词作为属性名,以JSON数组的格式返回
"""
print(prompt)

代码解释: 这段代码定义了一个字符串 prompt,其中包含了电影列表的 HTML 内容,并且为之后与ai交互提供了一个说明,要求从 HTML 中提取电影名、封面链接、简介、评分和评论人数,并以 JSON 数组的格式返回,属性名使用括号括起来。

在字符串模板中,{movies} 是一个占位符,用于插入电影列表的 HTML 内容。

最后,通过 print(prompt) 打印输出 prompt 字符串,以展示提取电影信息的具体要求。

4. 第四段代码

!pip install dashscope

!pip install dashscope 是一个命令,用于在 Colab 环境中安装名为 dashscope 的 Python 包。dashscope 是一个用于与 AI 模型进行交互的 Python 包,它提供了一个简单的接口,可以将文本传递给 AI 模型,并获取模型生成的文本。

import dashscope
dashscope.api_key = '你的API-KEY'

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()

代码解析

  1. 导入了 dashscope 包,用于与 AI 模型进行交互。
  2. 设置了 dashscope 的 API 密钥,以便进行身份验证和使用 dashscope 服务。
  3. 定义了一个函数 call_qwen_with_prompt(),用于调用 qwen_turbo 模型并生成电影信息的提示信息。
  4. 准备了要发送给模型的消息,消息中包含了 prompt 变量中定义的电影信息的提示。
  5. 使用 dashscope.Generation.call() 方法调用 qwen_turbo 模型,并传递消息作为输入。
  6. 将生成的文本结果打印输出。

总之,这段代码利用 dashscope 包与 AI 模型进行交互,通过给定的提示信息,让 AI 模型生成电影信息的提示。

结果

显示200就表示运行成功了,400就是运行错误

运行成功后,你就可以看到你的输出结果了。

四、结语

通过本文的实践,我们深入探索了如何利用 Python 和 AI 模型从网页中提取信息。借助 requests 库和 beautifulsoup4 库,我们可以轻松地获取网页内容,并从中提取所需的数据。而使用 AI 模型,我们不仅能够自动化生成相关的提示信息,还能提高提取数据的效率和准确性。

在今天信息爆炸的时代,获取和处理海量数据是一项具有挑战性的任务。然而,Python 的简洁、强大和灵活性,以及 AI 模型的智能化处理能力,为我们提供了强大的工具和支持,使我们能够更加高效地处理和分析数据,从而更好地服务于我们的需求和目标。

在未来,随着人工智能技术的不断发展和普及,我们相信,Python 和 AI 模型将在数据处理和分析领域发挥越来越重要的作用,为我们带来更多的便利和可能性。

让我们继续学习和探索,利用最新的技术和工具,不断提升自己的能力和竞争力,更好地应对未来的挑战和机遇!

如果你有任何问题或想法,欢迎在评论区分享和讨论。

感谢阅读!


这是一个从 https://juejin.cn/post/7369027991442636851 下的原始话题分离的讨论话题