likes
comments
collection
share

用Python和大模型如何实现爬虫(爬虫篇二)

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

前言

在数字化时代,数据挖掘与分析能力成为了一项重要技能。Google Colab,作为一个免费的云端Jupyter Notebook平台,为学习者和开发者提供了一个强大的工具,无需配置本地环境即可进行Python编程、数据分析乃至机器学习项目。

本文旨在引导读者迈出使用Colab的第一步,通过一个简单的Python爬虫示例,演示如何抓取网页数据,并利用阿里云Dashscope平台上的Qwen Turbo模型进行高级信息提取,展现从数据获取到智能分析的全过程。让我们一同探索如何在Colab上高效地进行数据探索与项目开发。

今天要带领大家爬取到的是豆瓣电影(movie.douban.com/chart) 的前两个电影列表的信息,如下所示

用Python和大模型如何实现爬虫(爬虫篇二)

Colab

登录Colab官网(colab.research.google.com/) ,要进入Cloab官网,你需要登录或注册一个Google账号,科学上网。

用Python和大模型如何实现爬虫(爬虫篇二)

点击文件里面新建笔记本 用Python和大模型如何实现爬虫(爬虫篇二)

点击+ 代码,你就可以开始写代码啦

用Python和大模型如何实现爬虫(爬虫篇二)

python爬虫

第一步:通过!pip install requests引入http请求库,!pip install beautifulsoup4引入beautifulsoup4库

!pip install requests
!pip install beautifulsoup4

点击运行按钮进行安装 用Python和大模型如何实现爬虫(爬虫篇二)

用Python和大模型如何实现爬虫(爬虫篇二)

第二步:引入请求库import requests ,用于发送 HTTP 请求和处理响应。引入 BeautifulSoup 库,用于解析 HTML 文档。

import requests  
from bs4 import BeautifulSoup 

第三步:定义一个函数,用于获取电影列表页面的 HTML 内容

  • 'User-Agent':要获得'User-Agent',在浏览器右键点击检查,在控制台输入navigator.userAgent

用Python和大模型如何实现爬虫(爬虫篇二)

  • all_movies_text = ''.join([movie.prettify() for movie in movies[:2]])遍历前两部电影,将其 HTML 内容添加到 all_movies_text 字符串中。

  • 通过response = requests.get(url, headers=headers)发送 HTTP GET 请求获取页面内容

  • movies = fetch_movie_list(url)调用 fetch_movie_list 函数获取电影列表页面的 HTML 内容

  • url = 'https://movie.douban.com/chart'

def 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'
  }
  response = requests.get(url, headers=headers)
  # 如果请求成功
  if response.status_code == 200:
    soup = BeautifulSoup(response.text, 'html.parser')
    movie_list = []  # 用于存储电影信息的列表
    movies = soup.select('#wrapper #content .article .item')  # 使用 CSS 选择器定位电影元素
    all_movies_text = ''.join([movie.prettify() for movie in movies[:2]])
    return all_movies_text  # 返回前两部电影的 HTML 内容
  else:
    print("Failed to retrieve content ")

url = 'https://movie.douban.com/chart'
movies = fetch_movie_list(url)

print(movies)

运行后获取到前两部电影的信息

用Python和大模型如何实现爬虫(爬虫篇二)

第四步:prompt 字符串:prompt 是一个包含多行文本的字符串,使用了 Python 中的 f-string 格式化字符串的特性。在字符串中包含了一个名为 movies 的变量,这个变量可能是一个电影列表或者电影相关的信息。字符串中提供了一段说明,提示用户如何获取电影的各种信息,包括电影名、封面链接、简介、评分以及评论人数。提示要求使用括号中的单词作为属性名,并以 JSON 数组的格式返回这些信息。

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

得到结果 用Python和大模型如何实现爬虫(爬虫篇二)

第五步:引入dashscope库

!pip install dashscope

用Python和大模型如何实现爬虫(爬虫篇二)

第六步:使用 Dashscope 的 API 来与Qwen Turbo 的模型进行交互式对话。

  • 导入 dashscope 库 import dashscope
  • 设置了 API 密钥,这是用来与 Dashscope 的服务进行通信的凭证。

首先登录阿里云(dashscope.aliyun.com/ ),点击立即开通

用Python和大模型如何实现爬虫(爬虫篇二)

登录后点击控制台,进入页面后点击API-KEY管理,获取api key 用Python和大模型如何实现爬虫(爬虫篇二)

用Python和大模型如何实现爬虫(爬虫篇二)

  • 定义了一个名为 call_qwen_with_prompt 的函数,该函数用于向 Qwen Turbo 模型提供提示,并接收模型返回的响应。
  • 在函数中构造了一个消息列表messages,其中包含了用户提供的提示。
  • 使用 dashscope.Generation.call 方法调用 Qwen Turbo 模型 dashscope.Generation.Models.qwen_turb,传递消息列表作为输入messages = messages,指定要返回的响应消息result_messages = 'message'
  • 打印模型返回的响应print(response)
import dashscope
dashscope.api_key = 'sk-...'# 这里输入刚刚在阿里云获取的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()

最后得到结果如下所示

Python和Js的区别

之前写了一篇用Node.js如何实现爬虫,那现在来对比一下两种语言的区别:

  1. 执行环境

    • JavaScript主要用于Web开发,通常在浏览器中执行,但也可以通过Node.js在服务器端执行。
    • Python则是一种通用编程语言,广泛应用于Web开发、数据科学、人工智能、系统管理等各个领域。
  2. 语法

    • JavaScript和Python有不同的语法结构和语法规则。例如,JavaScript使用分号作为语句结束符,而Python使用缩进来表示代码块。
    • JavaScript的语法受到C语言和Java的影响,而Python更注重代码的可读性和简洁性。
  3. 同步异步

    • JavaScript是一种事件驱动的语言,通常采用异步编程模式。它使用事件循环机制和回调函数来处理异步操作。
    • Python可以同步编程也可以异步编程。Python的标准库提供了asyncio等模块,支持异步编程,但也可以使用多线程或多进程来处理并发任务。
  4. 面向对象

    • JavaScript是一种面向对象的语言,但它的面向对象特性与传统的面向对象语言(如Java)有所不同。JavaScript使用原型继承而不是类继承。
    • Python是一种完全面向对象的语言,支持类和对象,具有传统的面向对象特性,包括封装、继承和多态。
  5. 类型系统

    • JavaScript是一种弱类型语言,变量的类型可以动态改变。
    • Python是一种强类型语言,变量在声明时就确定了其类型,并且类型转换需要显式地进行。
转载自:https://juejin.cn/post/7369492120148656147
评论
请登录