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

news2025/1/12 6:12:55

前言

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

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

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

image.png

Colab

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

image.png

点击文件里面新建笔记本 image.png

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

image.png

python爬虫

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

!pip install requests
!pip install beautifulsoup4

点击运行按钮进行安装 image.png

image.png

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

import requests  
from bs4 import BeautifulSoup 

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

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

image.png

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

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

image.png

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

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

得到结果 image.png

第五步:引入dashscope库

!pip install dashscope

image.png

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

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

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

image.png

登录后点击控制台,进入页面后点击API-KEY管理,获取api key image.png

image.png

  • 定义了一个名为 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()

最后得到结果如下所示

image.png

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是一种强类型语言,变量在声明时就确定了其类型,并且类型转换需要显式地进行。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis实战spring-boot-starter-data-redis

SpringBoot集成Redis环境搭建及配置详解_springboot redis 配置-CSDN博客 如何使用Spring Boot框架整合Redis:超详细案例教程_spring-boot-starter-data-redis-CSDN博客 https://blog.csdn.net/weixin_44411039/article/details/133578724 连接池选择及Jedis连接池参…

全球化2.0战略 | ZStack Cloud 支持9种语言

云轴科技ZStack近日宣布,其最新版本的ZStack Cloud已正式发布,可支持9种语言功能,包括中文(简体/繁体)、英文、俄语、法语、德语、日语、韩语、印尼语和泰语。这一重大更新是ZStack全球化战略2.0的重要一步&#xff0c…

SDK 和 API

什么是 SDK? 软件开发工具包(SDK)是一组适合于开发人员的平台特定构建工具集。您需要调试器、编译器和库等组件来创建在特定平台、操作系统或编程语言上运行的代码。SDK 将开发和运行软件所需的一切都集中在一处。此外,它们还包含…

c++题目_斐波那契数列

题目描述 大家都知道,斐波那契数列是满足如下性质的一个数列: F11,F21,FnFn−1Fn−2(n∈N∗)F​1​​1,F​2​​1,F​n​​F​n−1​​F​n−2​​(n∈N​∗​​) 请你求出 Fn%(1097)F​n​​%(10​9​​7) 的值。 输入 一行一个正整数 nn &#xff08…

《黑神话:悟空》全网互动量超1.8亿,百万天命人重走西游

四年磨一剑,一剑破长空。 8月20日10点,《黑神话:悟空》正式开服,同时轰动了国内外游戏圈子,冲顶国内各大社媒平台,一天包揽120个热搜。上线之后,《黑神话:悟空》火速登顶Steam热销游…

基于vue框架的保定市清苑区妇幼保健院收费管理系统6vqb8(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:医生,药品信息,销售信息,销售退货,供应商,药品采购,过期退货 开题报告内容 基于Vue框架的保定市清苑区妇幼保健院收费管理系统开题报告 一、引言 随着医疗改革的深入和信息技术的飞速发展,医疗机构的运营效率与服务质量成…

探索鸿蒙开发:自主学习或需专业培训?

在数字化时代背景下,鸿蒙开发作为一种新兴技术,受到了广泛关注。对于初学者来说,他们可能会疑惑是否需要参加培训才能掌握鸿蒙开发。本文将探讨这一问题,并提出一些建议。 首先,了解鸿蒙开发的基本概念和特点是非常重要…

leetcode242. 有效的字母异位词,哈希表

leetcode242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: t…

InternLM2.5-20B-Chat 正式上线 SiliconCloud 平台

经推理加速的 InternLM2.5-20B-Chat 已正式上线 SiliconCloud 平台。开发者们无需自行开发和部署,直接通过平台就可以轻松调用 API 服务实际应用。 API 调用代码: from openai import OpenAIclient OpenAI(api_key"YOUR_API_KEY", base_url&…

OV-DINO开放词检测环境安装与推理

引子 开放词检测,之前分享过一篇YOLO-World的文章,感兴趣同学请移步(YOLO-World环境搭建&推理测试_yoloworld 检测-CSDN博客),最近,由中山大学和美团联合提出新的开放域检测方法OV-DINO:基…

Java小问答--线程池相关的一些问题

1.为什么需要线程池呢,它有哪些好处? 答:线程在创建并执行时会从用户态进入到内核态,这个过程会非常影响效率,有时这个过程可能甚至比执行线程内的代码还要费时费力,所以,为了解决这种问题&am…

上传文件到github仓库

REF: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 已有repository,往仓库里更新内容 点击gitlab里的clone 在git bash中使用git clone,这个时候会将网上的仓库下载到本地,你可以把想要更新的内容直接拖到仓库里 …

Apache CloudStack Official Document 翻译节选(八)

关于 Apache CloudStack 的 最佳实践 (二) 防火墙的设定 Hardware Firewall 部署Apache CloudStack时,建议部署一套防火墙系统已保护Apache CloudStack的云管理服务。在防火墙的选用方面,既可以使用通用防火墙、也可以使用诸如Ju…

【算法】二叉树(满二叉树和完全二叉树)、堆(堆的向下调整)、堆排序、堆的内置模块heapq

1 二叉树 1.1 满二叉树和完全二叉树 1.2 堆的向下调整 2 堆排序 3 堆的内置模块 1 二叉树 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见类型包括: 1. **普通二叉树**:任意一…

在 uboot 中实现 UDP 协议

一、明确背景 uboot中有许多通信协议,像TFTP、NFS等,这些协议底层都是基于UDP协议来实现的,由于有一个板子在 uboot 段进行固件下载更新的需求,本来想基于TCP协议来实现自定义通信协议(TCP有自带的拥塞控制和重传机制&…

Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?

这些是Microsoft Visual C的不同版本的Redistributable(可再发行组件包)安装包,用于在用户的计算机上安装或更新必要的运行时库,以便运行使用这些版本的Visual C开发的应用程序。具体来说: Microsoft Visual C 2012 R…

编译linux内核时,让版本号不跟着git变化

文章目录 编译linux内核时,让版本号不跟着git变化现象方法一方法二 编译linux内核时,让版本号不跟着git变化 现象 内核每次重新编译时,uname -r都会跟着变。 4.1.15-00005-g482731e4-dirty 导致报错,modprobe: can’t change …

《深入理解Java虚拟机(第2版)》- 第1章 - 学习笔记

1.1 概述 Java不止是一门编程语言,它是一些列计算机软件和规范所形成的技术体系。 1.2 技术体系 Sun官方定义Java技术体系由5各部分组成,如下: Java编程语言JVMClass文件格式Java API 类库第三方Java类库(商业或开源&#xff…

养猫家庭必备好物——宠物空气净化器,让浮毛无处可逃

前不久,我爸妈担心我独自一个人来到一个陌生的城市打拼,身边没人陪我会孤单,但其实我一点儿都不孤单。虽然我家里没有人陪我聊天说话一起做饭,但是有猫陪我。 之前来到这座城市的第二年就养了猫,心情确实好很多&#…

【数据分享】《中国奶业年鉴》2002-2020(缺2014)

而今天要限时免费分享的数据就是2002-2020年间出版的《中国奶业年鉴》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 《中国奶业年鉴》是反映我国奶业发展情况的综合性年刊,也是农业农村部(原农业部&#xff0…