【爬虫】01 - 爬虫原理及其入门

爬虫01 - 爬虫原理及其入门

文章目录

  • 爬虫01 - 爬虫原理及其入门
    • 一:爬虫原理
      • 1:爬虫的优势‌
      • 2:爬虫的核心库
      • 3:经典举例
      • 4:合规问题

一:爬虫原理

学习爬虫之前前置知识需要了解这些:

我的HTTP介绍, 了解如何调用,requests需要

我的html介绍, 了解html结构

我的css介绍,了解选择器部分, 因为要用bs4选择对应位置的内容

所谓爬虫,就是通过模拟浏览器行为向目标网站发送请求(HTTP/HTTPS),解析响应内容并提取所需数据,最终存储到本地或数据库

  1. 请求数据(构造HTTP请求(GET/POST)获取网页内容)
  2. 解析数据(通过正则表达式、XPath或解析库(如BeautifulSoup)提取目标信息)
  3. 存储数据(将结果保存为CSV、Excel或数据库(如MySQL、MongoDB)

1:爬虫的优势‌

  • 丰富的库支持‌:Requests(HTTP请求)、BeautifulSoup/Scrapy(解析)、Selenium(动态渲染)等库简化开发流程。
  • ‌语法简洁高效‌:Python代码可读性强,适合快速实现复杂逻辑。
  • ‌生态成熟‌:社区活跃,反爬解决方案和开源项目资源丰富。

2:爬虫的核心库

在这里插入图片描述

pip install requests
pip install beautifulsoup4 # 注意这个是4版本的
pip install selenium
pip install scrapy

3:经典举例

举一个简单的top250首页电影的评分和电影名

import requests
from bs4 import BeautifulSoup# 1:构建请求,通过request先获取到对应的HTML/XML
url = "https://movie.douban.com/top250"
headers = {"User-Agent": "Mozilla/5.0"}response = requests.get(url, headers=headers)# 准备使用bs4进行解析,下面将使用find, find_all进行解析
soup = BeautifulSoup(response.text, "html.parser")movies = []
# 对于找到的所有的item进行解析
for item in soup.find_all("div", class_="item"):title = item.find("span", class_="title").textrating = item.find("span", class_="rating_num").textmovies.append({"title": title, "rating": rating})for index, movie in enumerate(movies):print(f"{index + 1}. {movie['title']} - {movie['rating']}")

4:合规问题

在这里插入图片描述

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

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

相关文章

React对于流式数据和非流式数据的处理和优化

React 在处理流式数据和非流式数据时,可以借助其组件模型、状态管理以及 React 18 引入的并发特性来实现高效的数据处理与渲染优化。 文章目录一、流式数据(Streaming Data)1. 定义2. 常见来源3. 处理方式使用 useState / useReducer 管理状态…

3、Vue 中使用 Cesium 实现可拖拽点标记及坐标实时显示功能

在 Cesium 地图开发中,实现点标记的拖拽交互并实时显示坐标信息是一个常见的需求。本文将详细介绍如何在 Vue 框架中使用 Cesium 的 Primitive 方式创建点标记,并实现拖拽功能及坐标提示框跟随效果。先看效果图功能实现概述我们将实现的功能包括&#xf…

Anthropic:从OpenAI分支到AI领域的领军者

自2021年由前OpenAI高管Dario和Daniela Amodei创立以来,Anthropic已迅速崛起为人工智能(AI)领域的重要力量。 公司专注于开发安全、可控且具备深度推理能力的AI系统,其Claude系列模型在生成式AI领域取得了显著成就。 此外&#xf…

前端开发中的输出问题

前端开发中的输出问题:console.log输出[object Object]在前端开发中,一个常见问题是使用console.log输出对象时显示为[object Object],而不是对象的详细内容。这通常发生在开发者试图直接打印对象时,浏览器默认只显示对象的字符串…

DSSA(Domain-Specific Software Architecture)特定领域架构

DSSA(Domain-Specific Software Architecture) 定义:针对特定应用领域设计的可复用软件架构,为领域内产品族提供统一基础。 目标: ✅ 最大化复用(需求/设计/代码)✅ 保证系统一致性✅ 降低开发成…

单调栈单调队列【算法进阶】

这周学完之后最大的收获就是单调栈和单调队列了!!!感觉好厉害能把时间复杂度瞬间压缩为O(N),不行我必须再纪念一下这么美妙的算法!!! 单调栈问题: 如果题目要求一个元素左边或右边…

C++编程基础

编程题一问题分析 题目要求使用 n 根小木棒,按照特定的方式排列,形成一个数字。具体规则如下: 每个数字由小木棒组成,例如: 1 需要 2 根小木棒。0 需要 6 根小木棒。其他数字(如 2, 3, 4, 5, 6, 7, 8, 9&am…

张量拼接操作

一.前言本章节来介绍一下张量拼接的操作,掌握torch.cat torch.stack使⽤,张量的拼接操作在神经⽹络搭建过程中是⾮常常⽤的⽅法,例如: 在后⾯将要学习到的残差⽹络、注意⼒机 制中都使⽤到了张量拼接。二.torch.cat 函数的使用torch.cat 函数…

Dify 连接本地 SpringAI MCP Server

Dify 连接本地 SpringAI MCP server 连接 MCP server 的方式大致有两种,一种是基于 stdio,一种是基于 sse,如果对于稳定和性能好的方案的话,sse 要比 stdio 好的多,所以本文采用的是基于 sse 和 Spring AI 部署本地 MC…

基于 Python 的数据分析技术综述

先说一点个人的看法“”MDX、OLAP(Mondrian)技术更适合构建面向业务用户的标准化分析产品,尤其当产品需要满足以下特点时:分析维度固定(如时间、区域、产品类别);需支持高并发查询(如…

Live555-RTSP服务器

RTSP Server创建 RTSP服务器初始化: RTSPServer::createNew->new RTSPServer::RTSPServer->GenericMediaServer::GenericMediaServer->turnOnBackgroundReadHandling(IPV4sock/IPV6sock,incomingConnectionHandlerIPv4)如上流程,创建RTSP服务器…

Redis Stack扩展功能

Redis JSONRedisJSON是Redis的一个扩展模块,它提供了对JSON数据的原生支持。常用操作:-- 设置一个JSON数据JSON.SET user $ {"name":"loulan","age":18}## key是user,value就是一个JSON数据。其中$表示JSON数据…

Takebishi旗下智能硬件网关产品devicegateway详细介绍

一、产品概述 DeviceGateway是由日本Takebishi公司研发的一款专业工业物联网(IIoT)硬件网关产品,专为实现现场工业设备与云端平台、IT系统之间的高效、安全数据传输而设计。作为一款可靠的硬件网关,DeviceGateway具有即插即用、稳…

单向链表反转 如何实现

单向链表反转的实现方法 ​ https://www.zhihu.com/question/441865393/answer/3208578798 ​ 单向链表反转是数据结构中的经典问题,在面试和实际开发中经常遇到。以下是 多种实现方式(包括递归和迭代),以 Go 语言为例。1. 单向链…

php+vue+Laravel音乐媒体播放及周边产品运营平台-nodejs-计算机毕业设计

目录具体实现截图课程项目技术路线开发技术介绍设计思路流程PHP核心代码部分展示详细视频演示/源码获取##项目介绍网络技术的广泛应用显著地推动了生活服务的信息化进程。结合音乐流媒体与周边产品的运营需求,构建一套音乐媒体播放及周边产品运营平台,成…

Python爬虫实战:研究xlwt 和 xlrd 库相关技术

1. 引言 1.1 研究背景与意义 随着电子商务的快速发展,电商平台积累了海量的商品数据。如何从这些数据中提取有价值的信息,为商家提供决策支持,成为电商领域的重要研究方向。传统人工采集和分析数据的方式效率低下,且容易出现错误。自动化数据采集与分析系统能够通过爬虫技…

【QGC】深入解析 QGC 配置管理

引言 在软件开发中,配置管理是一项至关重要的任务,它能帮助我们灵活地管理应用程序的各种参数和设置。QGroundControl(QGC)作为一款强大的开源无人机地面站软件,其配置管理系统设计精巧,值得我们深入学习。…

ChatGPT,从规则到强化学习

要了解 ChatGPT(Chat Generative Pre-training Transformer),我们不得不先看看 NLP 自然语言处理(Natural Language Processing)。因为 ChatGPT 属于 NLP 领域,而 NLP 则又是人工智能的一个分支。 那么什么…

【目标检测之Ultralytics预测框颜色修改】

在 Ultralytics YOLOv8 中修改预测框颜色为红色,以下是三种实用方案:方案 1:直接修改 plot() 方法的 colors 参数 在调用 results.plot() 时直接指定颜色参数: from ultralytics import YOLO# 加载模型 model YOLO("yolov8n…

让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息

文章目录🎯 目标:在 VS Code 调试器中自动显示这些变量信息🔍 原理简介⚠️ 其他方案的局限性❌ 方案一:重写 __repr__❌ 方案二:向 debugpy 注册自定义变量显示器(StrPresentationProvider)✅ …