当前位置: 首页 > news >正文

python - 爬虫简介

什么是爬虫?
  1. 模拟浏览器对网站服务器发送请求
  2. 解析服务器返回的响应数据,并保存数据
爬虫能获取哪些数据?
  1. 原则上所有可以通过浏览器获取的数据都可以爬取
  2. 爬虫也只能获取爬取浏览器可以正常获取的数据
爬虫的应用场景?
  1. 数据分析 (如电影票房、股票信息、商品销量等)
  2. 舆情监控(如微博、论坛等)
  3. 搜索引擎刷浏览播放量等(如各类自媒体账号)
  4. 抢票投票(对购票、投票接口发送请求)
  5. 网络安全(短信轰炸- 多个网站发送验证码)
为什么会有反爬?
  1. 防止有价值的数据被恶意获取
  2. 封锁垃圾流量,降低服务器的压力和运行成本
爬虫与反爬的对抗?
  1. 部分数据需要登录才能获取
  2. 通过验证码甄别真人与爬虫
  3. 监测同一IP 地址单位时间内的请求量
  4. 请求需要携带特定的数据
  5. 响应数据被加密,需要特定的算法解密
学习内容
  • 如何爬取网页数据? (如何对服务器发送请求,获取源文件)
    • Requests 模块(对服务器发送请求,获取数据 )
    • 模拟真实浏览器状态
    • 设置 Proxy 代理IP(避免单个ip发送过快,被服务器认为是爬虫)
  • 如何提取关键数据?(如何在源文件中获取有用的数据)
    • 正则表达式
    • XPath 表达式
  • 如何储存提取到的数据?
    • MongoDB 数据库
  • Scrapy 框架爬取海量数据
    • 集成发送请求,数据解析,数据保存
    • Scrapy 结合 MongoDB 储存数据
  • Scrapy-Redis 分布式爬虫(多个机器共同爬取一个任务)
    • Redis 数据库
    • Scrapy-Redis 框架
  • 模拟登陆
    • 登陆原理: Cookie 和 Session
    • Selenium 浏览器自动化
    • 爬取需要登陆才能获取的数据
  • 验证码识别
    • OpenCV 计算机视觉
    • OCR 文字识别引擎
    • EasyDL 机器学习云服务
  • 反爬与反反爬
    • 破解文字加密反爬
    • 各类加密算法:MD5,SHA256,AES,RSAc
    • JS逆向分析:还原网站的加密流程
  • 拓展内容
    • 数据分析: Pandas 模块
    • 高频面试题目
爬虫合法么?
  • 作为技术本身在法律中是不被禁止的
  • 爬虫能获取的数据都是能通过浏览器正常获取的公开数据
  • 爬虫只是更快速的获取大量数据

有法律风险的情况? 

  • 结合爬虫对网站服务器进行黑客攻击
  • 通过获取的数据谋取经济利益
  • 通过爬虫进行不当的商业竞争
  • 爬取的数据侵犯了对方的版权或隐私权

如何规避法律风险?

  • 切勿对网站服务器进行大规模的请求轰炸
  • 切勿对爬取到的数据进行公开传播或售卖
  • 切勿对涉及知识产权和用户隐私的数据进行爬取

相关文章:

python - 爬虫简介

什么是爬虫? 模拟浏览器对网站服务器发送请求解析服务器返回的响应数据,并保存数据 爬虫能获取哪些数据? 原则上所有可以通过浏览器获取的数据都可以爬取爬虫也只能获取爬取浏览器可以正常获取的数据 爬虫的应用场景? 数据分…...

【结构型设计模式】C#设计模式之外观模式

题目描述: 假设你正在开发一个音乐播放器应用程序,该应用程序需要与多个子系统进行交互,包括音频解码、音量控制和播放控制等。请使用外观模式设计一个音乐播放器的外观类,并实现相应的子系统类。 要求: 创建一个外观…...

Linux网络编程 socket编程篇(一) socket编程基础

目录 一、预备知识 1.IP地址 2.端口号 3.网络通信 4.TCP协议简介 5.UDP协议简介 6.网络字节序 二、socket 1.什么是socket(套接字)? 2.为什么要有套接字? 3.套接字的主要类型 拓】网络套接字 三、socket API 1.socket API是什么? 2.为什么…...

【二】SPI IP核的使用

【一】SPI IP核使用:传送门 基于qsys通过spi外部总线协议对sd卡进行读写操作 一、实验平台与实验的目的: ​ 正点原子开拓者、芯片型号:EP4CE10F17C8;还需要一张sd卡。 ​ 该实验主要是利用SPI IP核驱动SD卡来实现读写实验&am…...

面试热题(二叉树的锯齿形层次遍历)

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行) 输入:root [3,9,20,null,null,15,7] 输出:[[3…...

JVM—内存管理(运行时数据区)、垃圾回收

背景介绍 当JVM类加载器加载完字节码文件之后,会交给执行引擎执行,在执行的过程中会有一块JVM内存区域来存放程序运行过程中的数据,也就是我们图中放的运行时数据区,那这一块运行时数据区究竟帮我们做了哪些工作?我们…...

一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务

一、目的 kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二…...

19. python从入门到精通——Web编程

HTTP协议 HTTP协议的常用方法 方法 描述 GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 …...

PostMan 教程

安装https://www.cnblogs.com/mafly/p/postman.html Postman 使用方法详解https://blog.csdn.net/fxbin123/article/details/80428216 postman进行http接口测试https://blog.csdn.net/five3/article/details/53021084 postman的使用方法详解!最全面的教程https:/…...

Http常见状态码

一、状态码大类 状态码分类说明1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功——表示请求已经被成功接收,处理已完成3xx重定向——重定向到其它地方:它让客户端再发起一个…...

C语言之位运算

一、什么是位运算 所谓位运算是指进行二进制位的运算 在系统软件中,常要处理二进位的问题 例如,将一个存储单元中的各二进位左移或右移一位,两个数按位相加等 二、位运算符和位运算 1、按位与 运算符(&) 参加运算的两个数据&#xff…...

c语言进阶部分详解(数据在内存中的存储)

大家好,今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中,数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程,优化内存使用,提高程序的性能。 目录 一.数…...

VIOOVI的ECRS工时分析软件分析:SOP的核心和特征是什么?

制定SOP的主要目的是为企业做技术储备、提供企业的工作效率、防止同样的错误反复出现、让员工作业有标准化的行为准则。以规定的成本、规定的工作时间,生产质量均匀、符合规范的产品。为了能够达到上述要求,如果制造现场的操作混乱,比如制作工…...

无涯教程-Perl - lock函数

描述 此函数将咨询锁放在共享变量或THING中包含的引用对象上,直到该锁超出范围。 lock()是一个"弱关键字":这意味着,如果您在调用该函数之前已通过该名称定义了该函数,则将改为调用该函数。 语法 以下是此函数的简单语法- lock THING返回值 此函数不返回任何值…...

SpringBoot案例-部门管理-前后端联调

前后端联调 教学资料中提供了“前端工程”,将其解压即可使用nginx,启动nginx后,访问:http://localhost:90 小结 开发流程 明确需求、阅读接口文档、思路分析、接口开发(遵循接口文档)接口调试 postman测…...

每天一道leetcode:139. 单词拆分(动态规划中等)

今日份题目: 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1 输入: s "leetcode", …...

【C++】友元(含内部类)

一、友元是什么 我把你添加为我的友元,那么你可以访问我的成员。特别注意:它是单向的。即,我把你添加为我的友元,我却不能访问你的成员,除非你把我添加为你的友元。 以下代码可以让你粗略了解友元的使用。 #includ…...

SQL | 检索数据

1-检索数据 1.1-检索单个列 SELECT prod_name FROM Products; 上述SELECT语句从Products表中检索一个名为prod_name的列。 所要查找的列在select后面,from关键字指出从那个表查询数据。 输出如下: prod_name8 inch teddy bear12 inch teddy bear18…...

typeScript 之 运算符

工具: PlayGround 算术运算符 运算符描述加-减*乘/除%取模(求余)自增–自减 注意和--,实例: let value 0; console.log(value); //0, 先显示再增加后为1 console.log(value); //2,先增加后为2再显示关系运算符 运算符描述 …...

BGP实验

题目 IP地址配置 172.16.X.0/24为模拟用户环回接口接口 172.16.7.X/32为BGP邻居关系建立的环回接口 R1: R2: R3: R4: R5: R6: R7: R8: BGP邻居关系建立、宣告和反射器、联邦配置 R…...

AdaBoost算法原理与实践:从基础到优化

1. 集成学习与Boosting基础概念在机器学习领域,Boosting是一类强大的集成学习方法,它的核心思想是通过组合多个弱学习器来构建一个强学习器。与Bagging类方法(如随机森林)不同,Boosting采用序列化的方式训练基学习器&a…...

从慢查询到秒级响应:SQL调优实战全解析

从慢查询到秒级响应:SQL调优实战全解析 当业务系统因一条复杂SQL查询陷入卡顿,当数据库CPU飙升至100%却找不到原因,当开发团队为"这个查询为什么这么慢"争执不休——这些场景是否让你感同身受?在数据驱动的时代&#xf…...

Moonlight TV:如何用开源方案实现30ms低延迟游戏串流?

Moonlight TV:如何用开源方案实现30ms低延迟游戏串流? 【免费下载链接】moonlight-tv Lightweight NVIDIA GameStream Client, for LG webOS TV and embedded devices like Raspberry Pi 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-tv …...

随机森林在时间序列预测中的实践与应用

1. 随机森林在时间序列预测中的应用概述时间序列预测一直是数据分析领域的重要课题。传统方法如ARIMA虽然有效,但在处理复杂非线性关系时表现有限。随机森林作为一种强大的集成学习算法,近年来在时间序列预测中展现出独特优势。我最初接触这个领域是在20…...

想转行做自动驾驶产品经理?先看看这份从法规到落地的完整工作清单

从零转型自动驾驶产品经理:一份实战型能力地图与避坑指南 当特斯拉的FSD Beta版开始推送城市道路自动驾驶功能时,行业内外都在讨论一个关键问题:谁在定义这些智能汽车的"驾驶逻辑"?答案指向一个新兴岗位——自动驾驶产品…...

构建终身学习LLM智能体:从记忆架构到工程实践

1. 项目概述:当LLM学会“终身学习”最近在GitHub上看到一个项目,叫“awesome-lifelong-llm-agent”,第一眼就被这个标题吸引了。作为一个在AI和智能体领域摸爬滚打多年的从业者,我深知“终身学习”这四个字对于当前的大语言模型&a…...

CitySim高精度无人机轨迹数据集:智能交通安全研究的全面验证平台

CitySim高精度无人机轨迹数据集:智能交通安全研究的全面验证平台 【免费下载链接】UCF-SST-CitySim1-Dataset Official github page of UCF SST CitySim Dataset 项目地址: https://gitcode.com/gh_mirrors/ucf/UCF-SST-CitySim-Dataset CitySim是一个基于无…...

Steam卡片自动化收集引擎:Idle Master架构深度解析与技术实现

Steam卡片自动化收集引擎:Idle Master架构深度解析与技术实现 【免费下载链接】idle_master Get your Steam Trading Cards the Easy Way 项目地址: https://gitcode.com/gh_mirrors/id/idle_master 在Steam游戏生态系统中,交易卡片的收集机制既为…...

[具身智能-463]:无论语音识别,还是语音合成,为什么不直接在时域波形与文字之间映射,而必须通过中间的频域进行转换?

这是一个非常深刻且直击本质的问题!这触及到了信号处理和深度学习在语音领域的核心逻辑。简单来说,时域波形(Waveform) 就像是“原材料”,杂乱无章且冗余;而频域(Frequency Domain) …...

WinCC V7.5 SP1图层控制脚本实战:从单个显示到组合切换的完整代码解析

WinCC V7.5 SP1图层控制脚本实战:从单个显示到组合切换的完整代码解析 在工业自动化HMI开发中,WinCC的图层控制功能是构建复杂人机界面的重要工具。面对包含数十个图层的画面时,如何高效管理图层显示状态成为工程师必须掌握的技能。本文将带您…...