Python 网络爬取的时候使用那种框架
尽管现代的网站多采取前后端分离的方式进行开发了,但是对直接 API 的调用我们通常会有 token 的限制和可以调用频率的限制。
因此,在一些特定的网站上,我们可能还是需要使用网络爬虫的方式获得已经返回的 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
相关文章:
Python 网络爬取的时候使用那种框架
尽管现代的网站多采取前后端分离的方式进行开发了,但是对直接 API 的调用我们通常会有 token 的限制和可以调用频率的限制。 因此,在一些特定的网站上,我们可能还是需要使用网络爬虫的方式获得已经返回的 JSON 数据结构,甚至是处理…...
CentOS7安装源设置
此处的安装源地址需要填写:(适用于centos7) http://mirrors.aliyun.com/centos/7/os/x86_64/...
pool = multiprocessing.Pool()报错:module object has no attribute Pool
pool multiprocessing.Pool()报错:module object has no attribute Pool,为什么? 我很抱歉,前面提供的回答是错误的。在Python的multiprocessing模块中,确实有一个名为Pool的类。如果你在使用multiprocessing.Pool()…...
Linux Shell 实现一键部署podman
podman 介绍 使用 Podman 管理容器、Pod 和映像。从本地环境中无缝使用容器和 Kubernetes,Podman 提供与 Docker 非常相似的功能,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。 Podman 可以管理和运行…...
Biome-BGC生态系统模型与Python融合技术
Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中,对于碳的生物量积累,采用光合酶促反应机理模型计算出每天…...
Matlab图像处理-区域描述
一旦一幅图像的目标区域被确定,我们往往用一套描述子来表示其特性。选择区域描述子的动机不单纯为了减少在区域中原始数据的数量,而且也应有利于区别带有不同特性的区域。因此,当目标区域有大小、旋转、平移等方面的变化时,针对这…...
openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据
文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…...
Flink RowData 与 Row 相互转化工具类
RowData与Row区别 (0)都代表了一条记录。都可以设置RowKind,和列数量Aritry。 (1)RowData 属于Table API,而Row属于Stream API (2)RowData 属于Table内部接口,对用户不友…...
企业架构LNMP学习笔记48
数据结构类型操作: 数据结构:存储数据的方式 数据类型 算法:取数据的方式,代码就把数据进行组合,计算、存储、取出。 排序算法:冒泡排序、堆排序 二分。 key: key的命名规则不同于一般语言…...
docker部署neo4j
拉取镜像 docker pull neo4j:3.5.35-community查看镜像 [rootlocalhost data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE neo4j 3.5.35-community 3548ff943256 13 months ago 446MB创建容器并运行 docker run -d …...
融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?
本周四 融云直播间,点击报名~ ChatGPT 的出现,不仅让会话成为了未来商业的基本形态,也把大家谈论 AI 的语境从科技产业转向了 AI 与全产业的整合。 关注【融云全球互联网通信云】了解更多 而目前最热衷于拥抱生成式 AI 的行业中,…...
运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页
第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫…...
uni-app 点击蒙版层时关闭自定义弹窗
click.stop:用于阻止冒泡 click.stop 标签范围内,点击任何区域(包括 click 点击事件)都不会关闭弹窗。标签范围外会关闭弹窗 click.stop 标签内的 click 等事件:如果事件内有关闭弹窗的代码可关闭弹窗 在 template 中 <view class&quo…...
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
文章目录 创建环境创建专用网络VPC安全组创建云服务器打包部署2. Java环境启动项目开机启动任意服务1. 制作服务文件2. 制作启动脚本3. 制作停止脚本4. 增加执行权限5. 设置开机启动 创建镜像继续创建多台云服务器负载均衡弹性伸缩redis的报警规则白名单1. LAMP 环境1. 安装Apa…...
基于Java的设计模式-策略模式
策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 基本概念 策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们…...
小程序多种姿势更换文章
概述 简单的文章切换demo,通过倒计时、摇一摇、双击进行文章切换 详细 直接看效果图吧!比较简单,主要是练习一下... 小程序不带双击事件,可以记录第一次单击事件和第二次单机事件进行双击操作。 1、摇一摇是通过调用官方的 …...
读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]
文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…...
DNDC模型建模方法及应用
DNDC(Denitrification-Decomposition,反硝化-分解模型)是目前国际上最为成功的模拟生物地球化学循环的模型之一,自开发以来,经过不断完善和改进,从模拟简单的农田生态系统发展成为可以模拟几乎所有陆地生态…...
Kafka为什么是高性能高并发高可用架构
目录 1 前言2 顺序写入3 页缓存4 零拷贝5 Broker 性能6 流数据并行7 总结 1 前言 我们都知道 Kafka 是基于磁盘进行存储的,但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点,其吞吐量动辄几十上百万。小伙伴们是不是有点困惑了,一般认为…...
QT-day3
完成文本编辑器的保存工作 void Widget::on_savebton_clicked() {QString fileName QFileDialog::getSaveFileName(this,"保存","./","All(*.*);;Images(*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");QFile file(fileName);i…...
开发自测的测试用例设计方法
测试用例设计方法有:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法。 测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。 一.等价类划分法 顾名思义&#x…...
【AI视野·今日Sound 声学论文速览 第七期】Tue, 19 Sep 2023
AI视野今日CS.Sound 声学论文速览 Tue, 19 Sep 2023 Totally 1 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Frame-to-Utterance Convergence: A Spectra-Temporal Approach for Unified Spoofing Detection Authors Awais Khan, Khalid Mahmood Ma…...
MySQL 清空表 截断表
清空表:delete from users; 清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值、索引等不被清除,还是原来的值。 截断表:truncate table users; 截断表可以用于删除表中 的所有数据…...
2020-2023中国高等级自动驾驶产业发展趋势研究-中国高等级自动驾驶发展近况
1.2 中国高等级自动驾驶发展近况 通过对中国高等级自动驾驶行业的观察和分析,亿欧汽车认为,除技术解决方案提供商外,如今的车企、政府、资本同样在产业链中扮演重要角色。此外,车路协同技术的发展也为高等级自动驾驶的发展提供了更…...
Spring学习之ImportBeanDefinitionRegistrar接口
一、本文内容分类 1、接口功能 2、接口运用场景 3、使用案例 4、注意事项 二、接口功能介绍 描述:ImportBeanDefinitionRegistrar接口是也是spring的扩展点之一,它可以支持我们自己写的代码封装成BeanDefinition对象,注册到Spring容器中,功能类似于注…...
React 全栈体系(八)
第四章 React ajax 三、案例 – github 用户搜索 2. 代码实现 2.3 axios 发送请求 Search /* src/components/Search/index.jsx */ import React, { Component } from "react"; import axios from axiosexport default class Search extends Component {search …...
4.开放-封闭原则
这个原则其实是有两个特征,一个是说‘对于扩展是开放的(Open for extension),另一个是说‘对于更改是封闭的(Closed for modification)[ASD]。...
oracle递归with子句
比如现在想获取开始日期到结束日期每个月的月底日期,这个时候可以通过递归实现: --通过递归with子句获取开始日期到结束日期每个月的月末日期 WITH date_range (month_start, month_end) AS (SELECT TRUNC(to_date(bdate,yyyy-mm-dd), MM),LAST_DAY(to_…...
如何在Proteus进行STM32F103C8T6模拟以及keil5开发
一、下载Proteus 8和keil5 最新版 Proteus 8.15 Professional 图文安装教程(附安装包)_proteus密钥_main工作室的博客-CSDN博客Keil uVision5 5.38官方下载、安装及注册教程_keil uvision5下载_这是乐某的博客-CSDN博客 二、新建STM32F103C8项目 接下来…...
C# OpenCvSharp 图片模糊检测(拉普拉斯算子)
效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyl…...
备案网站名称 怎么填写/电商运营转行后悔了
前端面试题(3) 1、iframe有那些缺点? iframe会阻塞主页面的Onload事件;搜索引擎的检索程序无法解读这种页面,不利于SEO;iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页…...
河南万安建设集团有限公司网站/seo外推
aws mongodb本文最初在mongoDB上发布 。 感谢您支持使SitePoint成为可能的合作伙伴。 近年来,开发人员的状况发生了巨大变化。 对于我们开发人员来说,在我们自己的机器上运行我们的所有工具(数据库,Web服务器,开发IDE…...
用dw做网站的视频/百度seo快速排名优化软件
中国武术有句名言:“内练一口气,外练筋骨皮”,修炼内功可以让自己比变得更强!本文将全面的带领大家了解一下G1这款垃圾收集器,在正式了解G1之前,我们先来回顾一下垃圾回收的相关基础知识。 如何定位内存中…...
中江移动网站建设/扬州seo博客
CPU是什么CPU是什么?CPU 实际做什么?CPU的内部结构CPU 是寄存器的集合体计算机语言汇编语言程序计数器条件分支和循环机制标志寄存器通过地址和索引实现数组CPU 指令执行过程CPU是什么? CPU 的全称是 Central Processing Unit,也…...
温州做模具的网站/山东最新资讯
实例说明代理是Java SE 1.3版新增的特性。使用代理可以在程序运行时创建一个实现指定接口的新类。通常只有在编译时无法确定需要使用哪个接口时才需要使用代理,这对于应用程序员很少见。对于系统程序员而言,代理可以为工具类提供更加灵活的特性。本实例模…...
网站如何看是哪家公司做的/百度搜索关键词热度
使用数据使用JDBC读取和写入数据调整领域对象以适应持久化使用JdbcTemplate定义JDBC repository定义模式和预加载数据插入数据使用Spring Data JPA持久化数据将领域对象标注为实体声明JPA repository自定义JPA repository小结在本章会为Taco Cloud应用添加对数据持久化的支持。…...