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

【Python】网络爬虫经验之谈

爬虫经验之谈

    • 对爬虫的认识
    • 网站分析
    • 技术选型
    • JS逆向
    • 反爬机制
    • 结语

近段时间,因为工作需要做一些爬虫的开发,分享一下走过的坑和实战的经验吧!

对爬虫的认识

  • F12查看的网络请求,找到相应的接口查看一下json数据来源和构造。我爬取的网站很多信息是需要vip登录才可以获取的。我最开始试图破解vip这一步,结果是我天真了。后来查了一些资料才发现,爬虫干不了这个,得是黑客渗透才行!!看来之前的我还是对爬虫理解不透彻,,原来爬虫没有那么高端。其实就是对可见数据的抓取,完全是提高效率罢了,越界的事儿不是它的范畴

网站分析

目前爬虫获取数据基本分为两种情况,可选择一种使用,也可结合使用
1、找到url规律,get请求html,然后提取想要的数据
2、找到请求json数据的接口,模拟接口传参获取json数据
第一种情况

1、适用于html较为规律的情况下,几乎一眼就能看出。通常这种网站的开发都是非常简单的
2、有部分网页是js渲染过的,所以直接拿下来之后的html是不全的。需要用到splash这样的渲染库,它会把js渲染后的html给到你

第二种情况

1、最实用的手段,也是工程师们最喜欢的方式

技术选型

爬虫相关的最受欢迎的技术栈和相关描述,可以根据业务需要自行选取:

  • selenium:自动化模拟浏览器。这种方式效率比较低,但是比较简单,若遇到需要登陆时的滑块破解,有一定的破解难度
  • requests库:模拟登录维持会话与对方服务器进行交互。也是上述网站分析第二种情况的常用方式,也是非常非常受欢迎的方式。我个人最喜欢的,也是个人觉得性价比最高的。
  • pyspider:国人开发的一款web ui的爬虫框架。适用于简单的爬虫,效率高,我个人不是很喜欢,局限性太大
  • scrapy:很强大的爬虫框架,将爬虫脚本带向工程化开发和管理。如果需要将爬虫做成工程的话,比如做数据维护这类的长期需求,建议用这个
  • 数据解析用Beautifulsoup、re正则、pyquery,lxml都是没有问题的。本人基本是结合使用,我相比更喜欢正则
  • fiddle:网络数据抓包,可以查看网络请求和其带的数据,方便做接口查询和错误排查

JS逆向

JS逆向简单讲就是在JS里面找到我们想要的东西。举个例子:接口中返回的数据是经过加密的,我们拿到过后是一串密文,但是在前端显示是正常的,那么此数据就是在后端加密,前端JS解密的。那么我们需要找到JS解密的代码,将密文解密得到我们想要的明文。
我喜欢用的方式是:找到那个加密的变量,JS全局搜索变量,很快就可以找到需要的JS解密代码

反爬机制

反扒机制通常都是因为请求频率过高而遭刀封禁,常见封禁如下所示

  • IP封禁 : 搭建ip池,轮流使用
  • user-agent封禁 :搭建user-agent池,轮流使用
  • 账户封禁:维持多个账号,轮流使用

结语

我这里给新手提供一些爬虫向导,欢迎指正。最后强调一遍爬虫是:对可见数据的抓取,完全是提高效率罢了,越界的事儿不是它的范畴
简单分为关键三步:
1、查找接口,模拟参数
2、请求访问,抓取数据
3、提高数据抓取效率,实现快速抓取

相关文章:

【Python】网络爬虫经验之谈

爬虫经验之谈对爬虫的认识网站分析技术选型JS逆向反爬机制结语近段时间,因为工作需要做一些爬虫的开发,分享一下走过的坑和实战的经验吧!对爬虫的认识 F12查看的网络请求,找到相应的接口查看一下json数据来源和构造。我爬取的网站…...

数学建模美赛【LaTeX】公式、表格、图片

数学建模美赛【LaTeX】公式、表格、图片 1 宏包 \package{ } 就是在调用宏包,对计算机实在外行的同学姑且可以理解为工具箱。 每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的统一排版&a…...

【大数据】YARN节点标签Node Label特性

简介 YARN 的 Node-label 特性能够将不同的机器类型进行分组调度,也可以根据不同的资源要求进行分区调度。运维人员可以根据节点的特性将其分为不同的分区来满足业务多维度的使用需求。YARN的Node-label功能将很好的试用于异构集群中,可以更好地管理和调…...

C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题

这是一个网友咨询的问题,说他想控制默认打开文件之后solidworks上方工具栏的当前激活标签页。 之前我们提到过,制作Solidworks的插件也会在上面增加一个标签页,用来放自己开发的命令,经常开发的人肯定会遇到有时候更新版本,或者标…...

ElasticSearch 7.6.1

疑问 ES为什么这么快? 全文检索 听过一个程序扫描文本的每一个单词,针对单词建立索引,并保存该单词在文本中的位置,以及出现的次数。在检索查询时候,通过建立好的索引进行查询,将索引中单词对应的文本位…...

Linux系列 操作系统安装及服务控制(笔记)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.操作系统 1.Linux系统三大类 (1)ubu…...

Linux基础 - NTP时间同步

‍‍🏡博客主页: Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『Linux基础』 🌌上期文章: Linux基础 - DNS服务进阶 📰如觉得博主文章写的不错或对你有所帮助…...

golang 入门教程:迷你 Twitter 后端

请记住,这个项目主要是为了稍微熟悉下Golang,您可以复制架构,但该项目缺少适当的 ORM,没有适当的身份验证或授权,我完全无视中间件,也没有测试。 我将在其自己的部分中讨论所有这些问题,但重要的…...

CPP2022-30-期末模拟测试03

6-1 引用作函数形参交换两个整数 分数 5 全屏浏览题目 切换布局 作者 李廷元 单位 中国民用航空飞行学院 设计一个void类型的函数Swap&#xff0c;该函数有两个引用类型的参数&#xff0c;函数功能为实现两个整数交换的操作。 裁判测试程序样例&#xff1a; #include <…...

华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

二叉搜索树

1.二叉搜索树 1.1.二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者是具有一下性质的二叉树。 若它的左子树不为空&#xff0c;则左子树上的所有节点的值都小于根节点的值。若它的右子树不为空&#xff0c;则右子树上的所有节点的值都…...

数据结构(三):集合、字典、哈希表

数据结构&#xff08;三&#xff09;一、集合&#xff08;Set&#xff09;1.封装一个集合类2.集合常见的操作&#xff08;1&#xff09;并集&#xff08;2&#xff09;交集&#xff08;3&#xff09;差集&#xff08;4&#xff09;子集二、字典&#xff08;Map&#xff09;三、…...

Linux内核驱动开发(一)

Linux内核初探 linux操作系统历史 开发模式 git 分布式管理git clone 获取git push 提交git pull 更新 邮件组 mailing list patch 内核代码组成 Makfile arch 体系系统架构相关 block 块设备 crypto 加密算法 drivers 驱动&#xff08;85%&#xff09; atm 通信bluet…...

TCP/IP协议二十问

TCP/IP协议二十问 1. 什么是TCP网络分层&#xff1f; TCP网络分层一般分为五层&#xff1a; 应用层&#xff08;HTTP&#xff09;&#xff1a;组装数据包传输层&#xff08;TCP&#xff09;&#xff1a;增加TCP头部&#xff0c;包含端口号等信息网络互联层&#xff08;IP&am…...

常用Array数组操作方法

定义一个测试数组constplayers[{name:科比,num:24},{name:詹姆斯,num:23},{name:保罗,num:3},{name:威少,num:0},{name:杜兰特,num:35}]复制代码1、forEach参数代表含义item&#xff1a;遍历项index&#xff1a;遍历项的索引arr&#xff1a;数组本身Array.prototype.sx_forEach…...

【C++】set/multiset、map/multimap的使用

目录 一、关联式容器 二、set的介绍 1、接口count与容器multiset 2、接口lower_bound和upper_bound 三、map的介绍 1、接口insert 2、接口insert和operator[]和at 3、容器multimap 四、map和set相关OJ 1、前K个高频单词 2、两个数组的交集 一、关联式容器 vector、…...

vue3语法

vue3教程 //ps 这里是基本写法 一般项目不需要ref 因为需要一直return 这里是根据在不使用ts后缀 来在.vue里面写setup 如下图所示:setup setup是启动页面会自动执行的一个函数 项目里定义的所有变量&#xff0c;都要在setup当中 在setup定义的变量和方法&#xff0c;都需要r…...

对象之间的关系

目录1. 依赖2. 关联3. 聚合4. 组合Java的对象/类之间有四种关系&#xff1a;依赖、关联、组合、聚合。 1. 依赖 依赖&#xff08;Dependency&#xff09;&#xff1a; 一个对象的功能依赖于另一个对象。 类比&#xff1a;人类生存依赖食物和空气 体现&#xff1a;被依赖者体…...

云原生时代顶流消息中间件Apache Pulsar部署实操-上

文章目录安装运行时Java版本推荐Locally Standalone集群启动验证部署分布式集群部署说明初始化集群元数据部署BookKeeper部署BrokerAdmin客户端和验证Tiered Storage(层级存储)概述支持分级存储何时使用工作原理安装 运行时Java版本推荐 Locally Standalone集群 启动 # 下载…...

Python实现基于openCV+百度智能云平台实现《1:N人脸考勤机》文章最后附带源码!

目录 一、 项目介绍 1.1 项目名称 1.2 项目简介 1.3 项目物料 1.4 技术栈 二、 项目架构 三、项目细节 3.1 环境搭建 3.2 利用opencv实现摄像头调取及相关图像的采集 3.3 利用aips上传图像和结果返回 3.4 结果优化和处理 3.5 可扩展性 3.6 遗留问题和…...

郭老师-最高级的活法:不渡无缘之人

最高级的活法 ——不干涉他人的因果“说教只会引来仇恨&#xff0c; 疼痛才是最好的老师。”&#x1f33f; 真正的慈悲&#xff0c; 不是拉人上岸&#xff0c; 而是—— 允许他沉下去&#xff0c;再自己浮起来。⚖️ 一、四大悲哀&#xff1a;强行渡人&#xff0c;反被拖下水行…...

Kandinsky-5.0-I2V-Lite-5s后端集成:Node.js环境下的高性能API服务构建

Kandinsky-5.0-I2V-Lite-5s后端集成&#xff1a;Node.js环境下的高性能API服务构建 1. 引言 想象一下&#xff0c;你正在开发一个创意设计平台&#xff0c;用户上传一张图片&#xff0c;几秒钟后就能看到它变成了一段生动的视频。这种从静态图像到动态视频的转换能力&#xf…...

MySQL 8.0.34和5.7.43双版本共存安装指南(Windows环境避坑大全)

MySQL 8.0与5.7双版本共存实战&#xff1a;Windows环境全流程避坑指南 1. 版本共存的核心挑战与解决方案 在开发环境中同时运行MySQL 8.0和5.7版本的需求日益普遍——可能是为了兼容旧系统&#xff0c;或是测试应用在不同版本下的表现。但Windows环境下实现双版本共存会遇到几个…...

耦合详解-模块

耦合详解 耦合(Coupling)是衡量软件模块之间相互依赖程度的指标。低耦合是优秀软件设计的核心目标之一,它使系统更易于维护、测试和扩展。 1. 耦合的本质 耦合描述的是两个模块(类、组件、服务)之间的依赖关系强度。当修改一个模块时,需要修改其他模块的程度越高,耦合…...

DeepSeek-Coder-V2-Lite-Instruct社区成功案例:开发者如何用AI助手实现项目突破

DeepSeek-Coder-V2-Lite-Instruct社区成功案例&#xff1a;开发者如何用AI助手实现项目突破 【免费下载链接】DeepSeek-Coder-V2-Lite-Instruct 开源代码智能利器——DeepSeek-Coder-V2&#xff0c;性能比肩GPT4-Turbo&#xff0c;全面支持338种编程语言&#xff0c;128K超长上…...

春招已经过半,这一波再不动手,基本就没位置了

关注 霍格沃兹测试学院公众号&#xff0c;回复「资料」&#xff0c;领取人工智能测试开发技术合集导读3月底这个时间点&#xff0c;如果你还在纠结“要不要投”&#xff0c;那基本已经慢半拍了。现在的真实情况是&#xff1a;大厂已经进入筛选面试并行阶段一部分公司已经开始发…...

异构计算与边缘协同:基于 ARM/X86 的企业级 AI 视频中台架构设计

引言&#xff1a;算力碎片化时代的“异构”挑战 在 AI 落地安防的深水区&#xff0c;架构师面临的最大挑战不再是算法模型的精度&#xff0c;而是算力底座的碎片化。项目现场往往呈现出复杂的“万国牌”局面&#xff1a;总部机房可能部署着 NVIDIA A100 的 x86 服务器用于离线训…...

如何实现格式保留翻译?Hunyuan MT1.5结构化文本处理实战解析

如何实现格式保留翻译&#xff1f;Hunyuan MT1.5结构化文本处理实战解析 1. 引言&#xff1a;当翻译遇到格式难题 你有没有遇到过这样的尴尬场景&#xff1f;好不容易找到一款翻译工具&#xff0c;把英文网页翻译成了中文&#xff0c;结果发现所有链接都失效了&#xff0c;排…...

Qwen3-ASR-1.7B效果展示:实测多语言语音识别,准确率超高

Qwen3-ASR-1.7B效果展示&#xff1a;实测多语言语音识别&#xff0c;准确率超高 1. 开篇&#xff1a;一款让人惊艳的语音识别模型 最近测试了Qwen3-ASR-1.7B这款语音识别模型&#xff0c;结果让我大吃一惊。作为一款中等规模的模型&#xff0c;它在多语言识别上的表现完全不输…...

Qwen3.5-2B效果展示:儿童绘本图→识别角色/场景/情绪→生成故事续写+朗读脚本

Qwen3.5-2B效果展示&#xff1a;儿童绘本图→识别角色/场景/情绪→生成故事续写朗读脚本 1. 模型介绍 Qwen3.5-2B是通义千问团队推出的轻量化多模态基础模型&#xff0c;属于Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;。这个模型特别适合在资源有限的设备上部…...