Python 网络爬取的时候使用那种框架

news2024/11/26 3:52:30

尽管现代的网站多采取前后端分离的方式进行开发了,但是对直接 API 的调用我们通常会有 token 的限制和可以调用频率的限制。

2023-09-19_11-42-21

因此,在一些特定的网站上,我们可能还是需要使用网络爬虫的方式获得已经返回的 JSON 数据结构,甚至是处理已经完成界面展示的数据了。

Selenium

与BeautifulSoup和Scrapy相比,Selenium是一个不同的工具。

Selenium 并不是为网络爬取而生的。它实际上是为网络测试而开发的。Selenium被用于网络应用程序的自动化测试。

它使网络浏览器自动化,你可以用它来代表你在浏览器环境中进行操作。然而,它后来也被纳入了网络爬取的范畴。Selenium可以发送网络请求,还带有一个分析器。通过Selenium,你可以从HTML文档中提取数据,就像你使用Javascript DOM API那样。

Selenium的主要优势在于它能加载Javascript,并能帮助你访问JavaScript背后的数据,而不一定要自己经历发送额外请求的痛苦。这使得Selenium不仅对自己有用,而且对其他工具也有用。

使用Scrapy或BeautifulSoup 的网络爬虫如果需要只有在加载Javascript文件时才能获得的数据,就会使用Selenium。

Selenium 会启动一个浏览器,同时在这个浏览器中进行操作的模拟。

同时 Selenium 还具有 HTML 的 DOM 分析能力,通过选择器,你可以选择需要的数据。

Scrapy

Scrapy是一个网络抓取框架,它配备了大量的工具,使网络抓取和爬取变得简单。它在设计上是多线程的,并建立在Twisted之上。Twisted是一个异步网络框架,遵循对服务器的非阻塞I/O调用。因为它是多线程和非阻塞的,所以它在性能方面实际上是最好的,实际上是3个工具中最快的。Scrapy比这三个工具的一个优势是,它带有发送请求和解析响应的模块。

Scrapy 是开发复杂的网络抓取和爬虫工具,因为你可以创建大量的工作者,而且每个工作者都能毫不费力地工作。它的建立是为了消耗更少的内存,并将CPU资源的使用降到最低。事实上,一些基准测试表明,Scrapy在抓取方面比其他工具快20倍。它是可移植的,而且其功能可以扩展。

与Scrapy相关的主要问题是,它不是一个以初学者为中心的工具。

Scrapy 的文档比较难读,学习曲线也比较陡峭,我不认为这个工具比较适合初学者来使用。

Scrapy的一个主要缺点是它不能渲染 JavaScript;你必须发送 Ajax 请求来获取隐藏在JavaScript事件后面的数据。

这种情况对当前前后端分离的技术来说,还是有点麻烦的,我们必须要比较清楚的分析 AJAX 的数据请求。

BeautifulSoup

对应 Java 世界来说,Java 会有一个 JSoup。

一个针对 HTML 的 Dom 文件分析器和选择器,BeautifulSoup 在Python 中做了同样的工作。

通过让你对 HTML 界面中的内容进行分析和处理以便于能够从中获取数据。

比如说,如果界面中有表格,在表格中有数据,我们需要获取的就是表格中的数据的话,就可以使用 DOM 分析工具来进行分析。

总结

因最近我们在对爬虫的使用进行研究,对上面 3 个框架都有了一些探讨。

个人觉得比较简单的还是 Selenium,同时 Selenium 也足够强大,能够满足我们对一些小网站的爬虫分析。

Python 网络爬取的时候使用那种框架 - Python - iSharkFly

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

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

相关文章

[架构之路-218]- 架构师责权利的定位, 架构师是技术领导者、决策者、激励者、企业家思维、战略思维、理论指导

目录 一、架构的诉求与系统的规模和复杂度强相关 1.1 系统的规模和复杂度对架构的影响 1.2 系统的业务需求对架构的影响 1.3 业架构和软件架构 二、架构师的类型 三、系统架构师 3.1 什么是系统架构师 3.2 系统架构师的技术素质要求 3.3 系统架构师的管理素质要求 3.…

【小程序】九宫格抽奖,页面不是有点丑,功能没啥问题,有需要直接拿去改吧

概述 常用活动抽奖功能,九宫格抽奖,两种方式切换,图片模式和文字模式,带抽奖次数。功能没啥问题,除了有点丑,css样式自己美化一下就可以了... 详细 微信小程序大转盘抽奖 演示图文字: 演示图…

Redis延迟双删-架构案例2021(三十二)

数据库设计 某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。 通过对需求的分析&#xf…

JVM G1垃圾回收器学习笔记

前言 最近在工作中遇到频繁FullGC且YoungGC时间有时特别长的情况,而自己对JVM的垃圾回收也是一知半解,因此需要对JVM做系统的了解,为快速解决工作中的问题,能有效分析GC日志和业务代码,先从G1垃圾回收器开始学习&…

【论文阅读】检索增强发展历程及相关文章总结

文章目录 前言Knn-LMInsightMethodResultsDomain AdaptionTuning Nearest Neighbor Search Analysis REALMInsightsMethodKnowledge RetrieverKnowledge-Augmented Encoder ExpResultAblation StudyCase Study DPRInsightMethodExperimentsResults RAGInsightRAG-Sequence Mode…

小程序中如何查看会员的访问记录

​在小程序中,我们可以通过如下方式来查看会员的访问记录。下面是具体的操作流程: 1. 找到指定的会员卡。在管理员后台->会员管理处,找到需要查看访客记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡详情。点…

RK3588平台开发系列讲解(项目篇)视频监控之RTMP推流

文章目录 一、RTMP协议是什么二、RTMP 的原理三、Nginx 流媒体服务器四、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、WebRTC流媒体传输协议等。 视频监控项目组成,分为三部分:…

PHP-composer安装扩展安装,批量操作合并pdf

清除Composer缓存: 运行以下命令来清除Composer的缓存,并再次尝试安装包。 bash composer clear-cache 使用不同的镜像源: Composer使用的默认包源可能会受到限制或访问问题。你可以切换到使用其他镜像源,如阿里云、Composer中国…

uni-app:实现等待加载功能

例子 下例是实现蓝牙连接的部分代码,先进行加载连接显示,在进行连接,连接成功/失败,都自动关闭加载效果 效果 核心 开始的加载效果: uni.showLoading({title: 正在连接,请稍候...,mask: true, }); 关闭…

进程转态及其转换过程

一.进程转态及其转换过程 在 Linux 操作系统中,进程的状态可以相互转换,下面是不同状态之间的相互转换: 就绪态(Ready State):当一个进程创建后,它被放入就绪态。此时,进程已经被加…

Docker Compose初使用

简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(cont…

密码学概论

1.密码学的三大历史阶段: 第一阶段 古典密码学 依赖设备,主要特点 数据安全基于算法的保密,算法不公开,只要破译算法 密文就会被破解, 在1883年第一次提出 加密算法应该基于算法公开 不影响密文和秘钥的安全&#xff…

《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.25.14集群(多主多从)》

一、部署架构图 1、架构图如下所示: 2、部署流程图如下所示: 二、环境信息 1、资源下载基于外部etcd+部署容器版kubernetes1.25.14集群资源合集 2、部署规划主机名K8S版本系统版本内核版本IP地址备注k8s-master-121.25.14Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.12ma…

【音视频】AAC音频压缩格式

AAC音频压缩格式 ADTSvsADIF 总结: ADTS可以在任意帧解码,也就是说它每一顿都有头信息【默认使用格式】 ADIF只有一个统一的头,所以必须得到所有的数据后解码【一般不使用】 每一帧结构 每一帧的ADTS的头文件都包含了音频的采样率&#x…

【Linux学习】01Linux初识与安装

Linux(B站黑马)学习笔记 01Linux初识与安装 文章目录 Linux(B站黑马)学习笔记前言01Linux初识与安装操作系统简述Linux初识虚拟机介绍安装VMware Workstation虚拟化软件VMware中安装CentOS7 Linux操作系统下载CentOS操作系统VMwa…

kafka安装部署,和基本操作

kafka下载地址:Apache Kafka 我这里下载3.5.1 ​ 2、通过rz命令上传到linux服务器 3、解压 tar -zxvf kafka_2.12-3.5.1.tgz 4、在config目录下修改配置文件server.properties 主要修改这两处: #监听的端口advertised.listenersPLAINTEXT://自己…

【音视频】MP4封装格式

基本概念 使用MP4box.js查看MP4内部组成结构 整体结构 数据索引(moov)数据流包(mdat) 各个包的位置,大小,信息,时间戳,编码方式等全在数据索引 数据流包只有纯二进制码流数据 数据…

Linux基础开发工具

目录 前言 一、yum —— 软件包管理工具 1.1 yum的简介 1.2 yum的使用 1.3 yum源更新 二、vim —— 文本编辑器 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 extra vim补充 extra1 批量化注释 extra2 创建文件的…

腾讯云微服务平台 TSF 异地多活单元化能力重磅升级

导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕,40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场,腾讯云微服务平台 TSF 产品经理张桢带来了《腾讯云微服务平台 TSF 异地多活单元化能力重磅升级》的精彩演讲。本…

【LeetCode热题100】--48.找到字符串中所有字母异位词

48.找到字符串中所有字母异位词 使用滑动窗口: 由于字符串p的异位词的长度一定与字符串p的长度相同,所以我们可以在字符串s中构造一个长度为字符串p的长度相同的滑动窗口,并在滑动中维护窗口中每种字母的数量;当窗口中每种字母的数…