likes
comments
collection
share

AI赋能Python,跟传统爬虫说再见!

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

前言

在传统的python爬虫中,我们只能获取到所爬取到的内容,但是在对爬取的内容分析时需要浪费很多的精力。本文将给大家展示如何利用大模型对爬取到的内容进行分析。(本项目演示环境为谷歌colab平台)

代码编写

1.传统python代码部分

进入到colab平台,将我们的代码放入到输入框,即可借助远程服务器运行。(需要确保科学上网状态) AI赋能Python,跟传统爬虫说再见!

Python库的安装

# python http请求库

!pip install requests

# python dom 查找

!pip install beautifulsoup4

1. !pip install requests

这条命令是使用pip(Python的包管理器)来安装名为requests的库。requests库是一个非常流行且用户友好的HTTP库,它允许你发送HTTP请求,比如GET、POST等,非常适用于网页内容抓取、API调用等网络通信任务。通过简单的函数调用,你就可以轻松地完成复杂的HTTP请求,而无需关注底层的网络细节。例如,你可以用它来下载网页内容、上传数据到服务器或与各种API交互。

2. !pip install beautifulsoup4

这一命令同样是利用pip安装名为beautifulsoup4的库,它是Beautiful Soup库的第4个主要版本,简称BS4。Beautiful Soup是一个用于解析HTML和XML文档的库,特别适合于从网页中提取数据。它提供了一套简单直观的接口,让你能够以自然的方式遍历和搜索文档树,即使网页的HTML结构混乱或不规范也能有效处理。结合requests库获取的网页内容,你可以使用Beautiful Soup来查找、提取和操作特定的HTML元素,比如提取文章标题、链接、图片URL等信息。

总结

这两条命令共同为Python环境增添了强大的网络数据抓取能力。requests负责网络请求,获取网页数据;而beautifulsoup4则专注于解析这些数据,让你能方便地定位并提取所需的信息。这对组合是进行网页爬虫开发、数据挖掘项目时的常见选择。需要注意的是,命令前的感叹号!通常用于Jupyter Notebook或某些Python交互环境中,指示这是一个系统命令而非Python代码,直接在操作系统层面执行pip安装命令。在标准的Python脚本或命令行界面中,直接运行pip install命令即可,无需加!

指令成功执行结果

AI赋能Python,跟传统爬虫说再见!

传统爬虫代码的编写

# 引入请求库 模块化为复用,封装而来

# 函数级化 类 文件 架构

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'

  }

  #  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')


    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)

print(movies)
  1. 导入必要的库

    • import requests: 导入requests库,用于发送HTTP请求获取网页内容。
    • from bs4 import BeautifulSoup: 从BeautifulSoup库中导入BeautifulSoup类,用于解析HTML文档。
  2. 定义函数fetch_movie_list(url) :该函数接收一个URL参数,用于从指定的网页中抓取电影列表信息。

    • 设置请求头:定义了一个headers字典,模拟浏览器的User-Agent,以更像真实用户访问,避免被服务器拒绝。
    • 发送GET请求:使用requests.get()方法发送HTTP GET请求至指定的URL,并传入headers。
    • 检查响应状态:如果请求成功(状态码200),继续处理响应内容;否则,打印错误信息“Failed to retrieve content”。
    • 解析响应内容:使用BeautifulSoup解析返回的HTML文本(response.text),选择器语法'#wrapper #content .article .item'用于定位到电影列表项。这里.select()方法返回所有匹配的选择器的元素列表。
    • 提取并格式化电影信息:遍历前两个电影元素(movies[:2]),使用.prettify()方法将每个元素的HTML结构美化后转换为字符串,然后将这些字符串连接起来形成all_movies_text
    • 返回结果:最后返回包含前两部电影详情的格式化文本all_movies_text
  3. 调用函数并打印结果

    • 定义了目标URL为豆瓣电影排行榜页面。
    • 调用fetch_movie_list(url)函数,传入URL,获取并存储电影信息。
    • 打印函数返回的结果,即前两部电影的HTML片段。

代码成功执行结果如下

AI赋能Python,跟传统爬虫说再见!

python与Ai的结合

# AIGC LLM + Prompt(指令)

# es6 `` 字符串模版

# python

prompt = f"""

{movies}

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

"""

print(prompt)

这段代码中构造一个Prompt(指令)字符串,用于指导一个语言模型(LLM)如何处理和解析特定格式的数据。

AI接口的连接

1. 指令!pip install dashscope

输入指令 !pip install dashscope

!pip install dashscope 命令的作用是使用pip工具安装名为DashScope的Python库。DashScope是阿里云开发的一款低代码AI开发平台,提供了大量的机器学习和深度学习模型,让用户能够快速构建、部署和扩展AI应用。

成功执行结果如下

AI赋能Python,跟传统爬虫说再见!

阿里云通义千问接口的获取与配置

开通和获取通义千问的API-KEY教程如下:

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

import dashscope

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

这段代码展示了如何使用DashScope API调用其内置的Qwen模型(Qwen是阿里云开发的超大规模语言模型)来生成文本响应。以下是代码的详细梳理:

  1. 导入DashScope库: 首先,通过import dashscope导入DashScope库,以便在代码中使用其提供的功能。

  2. 设置API密钥: 使用dashscope.api_key = 'sk-6f82ed26394d45e6bc506d8d59791494'设置DashScope的API密钥。这个密钥是用于认证和授权调用DashScope API的凭据,确保只有拥有该密钥的用户可以访问相关服务。请注意,实际使用时应替换此密钥为你自己在DashScope平台上获得的API密钥。

  3. 定义函数call_qwen_with_prompt() : 此函数用于通过Qwen模型生成文本响应。

    • 定义消息内容: 在函数内部,首先创建了一个名为messages的列表,其中包含一个字典。这个字典代表了一条消息,其结构包括角色(role)和内容(content)。在这个例子中,role被设置为'user',表示这是一条用户消息,而content则是一个名为prompt的变量,应事先定义好,包含你希望模型生成响应的实际问题或指令。

    • 调用Qwen模型: 接着,通过dashscope.Generation.call()方法调用了Qwen Turbo模型。这个方法需要几个参数:

      • 模型标识dashscope.Generation.Models.qwen_turbo指定了要使用的模型为Qwen Turbo。
      • 消息messages=messages传递了之前定义的消息列表,作为模型的输入。
      • 结果消息标识result_messages='message'似乎是用来指定返回结果中消息的字段名,但根据官方文档,此参数并不存在于标准调用接口中,可能是笔误或对API的误解。正确的用法可能不需要此参数,或者应当根据实际API文档调整。
    • 打印响应: 最后,函数打印了模型的响应response,即针对用户输入提示生成的文本内容。

  4. 调用函数: 通过call_qwen_with_prompt()调用该函数,执行上述过程,实际上触发了对Qwen模型的请求并打印返回的响应。

注意:在实际应用中,确保已经正确安装了DashScope库,并且你的API密钥有效且具有调用Qwen模型的权限。此外,确保prompt变量在调用前已经被正确定义并赋值。

以上,AI与Python的结合就已经完毕了,接下来我们来看看执行的效果:

{"status_code": 200, "request_id": "904cb2e9-1104-958e-acb5-ac7bf08953f9", "code": "", "message": "", "output": {"text": "json\n[\n  {\n    \"name\": \"对你的想象\",\n    \"picture\": \"[https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2905327559.jpg\](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\": 20433\n  },\n  {\n    \"name\": \"哥斯拉-1.0\",\n    \"picture\": \"[https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2900227040.jpg\](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\": 25229\n  }\n]\n\n这是根据您提供的HTML代码格式化成的JSON数组,包含了两部电影的名称、图片链接、简介、评分和评论人数。", "finish_reason": "stop", "choices": null}, "usage": {"input_tokens": 897, "output_tokens": 480, "total_tokens": 1377}

AI赋能Python,跟传统爬虫说再见!

最终我们会获取到,大模型根据prompt和原始爬虫内容数据得到的结果。是不是很炫酷,颠覆了你对传统爬虫的认识。

本篇文章就到此为止啦,希望通过这篇文章能对你了解AI和Python结合赋能传统爬虫有所帮助,本人水平有限难免会有纰漏,欢迎大家指正。如觉得这篇文章对你有帮助的话,欢迎点赞收藏加关注,感谢支持🌹🌹。

AI赋能Python,跟传统爬虫说再见!

转载自:https://juejin.cn/post/7369876349488971815
评论
请登录