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

爬虫入门--了解相关工具

目录

1.爬虫与python

2.第一个爬虫

3.web请求的全过程 

3.1服务器渲染 

3.2前端JS渲染 

4.浏览器工具 

4.1Elements

4.2Console 

4.3Source

 4.4network(重点)

5.小结


1.爬虫与python

首先我们要知道,爬虫一定要用Python么? 非也~ 用Java也行, C也可以,请各位记住,编程语言只是工具,抓到数据是你的目的,用什么工具去达到你的目的都是可以的,和吃饭一样, 可以用叉子也可以用筷子, 最终的结果都是你能吃到饭,那为什么大多数人喜欢用Python呢? 答案: 因为Python写爬虫简单,不理解? 问: 为什么吃米饭不用刀叉? 用筷子? 因为简单! 好用!

而Python是众多编程语言中, 小白上手最快, 语法最简单,而且如果要成为一名python全栈工程师,爬虫这项技能是有必要掌握的,而python有非常多的关于爬虫能用到的第三方支持库. 说直白点儿. 就是你用筷子吃饭, 我还附送你一个佣人. 帮你吃! 这样吃的是不是更爽了. 更容易了~


2.第一个爬虫

爬虫就是我们通过我们写的程序去抓取互联网上的数据资源. 比如, 此时我需要百度的资源. 在不考虑爬虫的情况下, 我们肯定是打开浏览器, 然后输入百度的网址, 紧接着, 我们就能在浏览器上看到百度的内容了. 那换成爬虫呢? 其实道理是一样的. 只不过, 我们需要用代码来模拟一个浏览器, 然后同样的输入百度的网址. 那么我们的程序应该也能拿到百度的内容. 对吧~

在python中, 我们可以直接用urllib模块来完成对浏览器的模拟工作~, 直接上代码

from urllib.request import urlopenresp = urlopen("http://www.baidu.com")  # 打开 百度
print(resp.read().decode("utf-8"))  # 打印 抓取到的内容

我们可以把抓取到的html内容全部写入到文件中, 然后和原版的百度进行对比, 看看是否一致  

from urllib.request import urlopenresp = urlopen("http://www.baidu.com")  # 打开 百度# print(resp.read().decode("utf-8"))  # 打印 抓取到的内容with open("baidu.html", mode="w", encoding="utf-8") as f:  # 创建文件f.write(resp.read().decode("utf-8"))  # 保存在文件中


3.web请求的全过程 

大家可以去补充一些前端的知识,学习爬虫我们要求的不多,只要能过看懂就可以,话不多说,直接上图~

 接下来就是一个比较重要的事情了. 所有的数据都在页面源代码里么?  

💡非也~ 完整的页面展示是通过将源代码渲染得到的,而常见的页面渲染有两种

3.1服务器渲染 

 服务器渲染,你需要的数据直接在页面源代码中就能搜到:

这个最容易理解,也是最简单的,含义呢就是我们在请求到服务器的时候,服务器直接把数据全部写入到html中,我们浏览器就能直接拿到带有数据的html内容,比如:

📖 由于数据是直接写在html中的, 所以我们能看到的数据都在页面源代码中能找的到的.

这种网页一般都相对比较容易就能抓取到页面内容

3.2前端JS渲染 

这种就稍显麻烦了,这种机制一般是第一次请求服务器返回一堆HTML框架结构,然后再次请求到真正保存数据的服务器,由这个服务器返回数据,最后在浏览器上对数据进行加载,就像这样:  

大多数页面这样做的好处就是可以缓解服务器的压力,就像我们平常访问一些购物页面,都是直奔主题,直接搜索自己想要的东西,虽然JS渲染无法直接获得我们爬取,我们还可以通过浏览器的调试工具。

📖那我们下一步介绍浏览器开发者工具,注意是开发者工具哦,功能也很强大,是我们以后学习的主要工具,当然还有pycharm~


4.浏览器工具 

Chrome是一款非常优秀的浏览器. 不仅仅体现在用户使用上. 对于我们开发人员而言也是非常非常好用的.

对于一名爬虫工程师而言. 浏览器是最能直观的看到网页情况以及网页加载内容的地方. 我们可以按下F12来查看一些普通用户很少能使用到的工具.

其中,最重要的Elements,Console,Sources,Network。

4.1Elements

Elements是我们实时的网页内容情况,注意, 很多兄弟尤其到了后期,非常容易混淆Elements以及页面源代码之间的关系,这里我们重点强调一下:

🏷️🏷️

  1. 页面源代码是执行js脚本以及用户操作之前的服务器返回给我们最原始的内容

  2. Elements中看到的内容是js脚本以及用户操作之后的当时的页面显示效果

  3. 一个是写好的,一个是实时的

4.2Console 

第二个窗口,Console是用来查看程序员留下的一些打印内容,以及日志内容的,我们可以在这里输入一些js代码自动执行。

4.3Source

第三个窗口, Source, 这里能看到该网页打开时加载的所有内容. 包括页面源代码. 脚本. 样式, 图片等等全部内容.

 4.4network(重点)

第四个窗口, Network, 我们一般习惯称呼它为抓包工具. 在这里, 我们能看到当前网页加载的所有网路网络请求, 以及请求的详细内容. 这一点对我们爬虫来说至关重要.

  其他更加具体的内容. 随着咱们学习的展开. 会逐一进行讲解.


5.小结

  1. 学习了爬虫的主要环境,并用代码模拟浏览器制作的百度页面
  2. 掌握浏览器开发者工具

相关文章:

爬虫入门--了解相关工具

目录 1.爬虫与python 2.第一个爬虫 3.web请求的全过程 3.1服务器渲染 3.2前端JS渲染 4.浏览器工具 4.1Elements 4.2Console 4.3Source 4.4network(重点) 5.小结 1.爬虫与python 首先我们要知道,爬虫一定要用Python么? 非也~…...

django项目中通用的分页组件

文章目录 分页组件pager组件代码 分页组件 应用分页组件,需要以下两个步骤: 视图函数中:(先获取queryset,将request和queryset传入分页组件对象中,得到生成的html标签) def customer_list(requ…...

想实现ubuntu搭建sqli-labs靶场

目录 首先前期的nginx和php部署完成​编辑​编辑 Xftp导入sqli-labs 遇到了的问题 它提示我们请检查db-creds.inc 去尝试解决这个问题 尝试修改MySQL root密码 修改db-creds.inc配置 再次尝试依旧失败 思考:会不会是MySQL版本过高的原因 重新下载MySQL5.7.…...

tp8 按日期分组查出数据

1.如果数据库里时间字段都是时间戳,使用mysql中的from_unixtime()函数 field("from_unixtime(create_time,%Y-%m-%d) as time,group_concat(id)")->group(time)->select()2. 如果数据库是普通的日期格式(如2024-01-02 01:23:50)&#x…...

单例模式(懒汉模式,饿汉模式)

单例的饿汉模式:在主函数未调用之前该单例就已经存在了,所以不存在线程安全的问题。 class Singleton { private: Singleton(){} public:static Singleton s1;static Singleton* GetInstance(){return &s1;}Singleton(const Singleton&) delet…...

【Qt】Item Widgets 多元素控件

Qt中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView 上述控件分为Widget和View,其区别如下: 以QTableWidget和QTableView为例 QTableView是基于MVC(Model-View-Controller)设计的控件。QTableView自身…...

sharded_inference_engine:MLXDynamicShardInferenceEngine;step

目录 sharded_inference_engine:MLXDynamicShardInferenceEngine 类属性 方法 __init__(self) async def infer_prompt(self, shard: Shard, prompt: str, inference_state: Optional[str] = None) -> (np.ndarray, str, bool) async def infer_tensor(self, shard: …...

JAVA开发学习-day21

JAVA开发学习-day21 1. 删除表单数据 根据ElementUI的官方组件指南&#xff0c;为表单每列的数据添加删除按钮 <el-table :data"tableData" style"width: 100%"><el-table-column prop"id" label"ID" width"180"…...

Python的安装环境以及应用

1.环境python2&#xff0c;Python 最新安装3.12可以使用源码安装 查看安装包 [rootpython001 ~]# yum list installed | grep epel 3[rootpython001 ~]# yum list installed | grep python [rootpython001 ~]# yum -y install python3 安装python3 查看版本 [root…...

TabLayout使用以及自定义tab标签

<?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tool…...

第二十节、有限状态机和抽象类多态

一、抽象类 挂载到动画器上的就是继承抽象类代码 1、使用onenable周期函数启用 2、在每一个周期函数中对抽象类进行调用 3、隐藏公开的变量...

SQL注入实例(sqli-labs/less-23)

0、初始网页 1、闭合方式判断 闭合符号为单引号&#xff0c;通过测试发现过滤了注释&#xff0c;所以直接闭合 2、确定查询表的列数 确定查询表的列数为3列 ?id1 order by 3 3、确定回显位置 回显位置为第二列和第三列 ?id-1 union select 1,2,3 4、查看当前登录和数据…...

3.Redis数据类型(二)

LIST List 是一个简单的双向链表&#xff0c;支持从两端进行插入和删除操作。 常用命令&#xff1a; lpush/rpush/lrange lpush 插入一个或多个元素到列表的左端。 rpush 插入一个或多个元素到列表的右端。 lrange key start stop 获取元素&#xff08;前闭后闭&#xff0…...

JavaWeb系列十一: Web 开发会话技术Session

Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 …...

k8s中yaml文件的编写

目录 1.编写pod.yaml 2.编写deploment.yaml 3.编写service.yaml关联创建的pod 4.总结获取K8S资源配置清单文件模板方法 5.补充 1.编写pod.yaml vim demo1-pod.yaml apiVersion: v1 kind: Pod metadata:name: scj-podnamespace: xy101labels:app: nginxmylove: tangjunmyc…...

打卡第37天------动态规划

加油!不要放弃,那些冲进清北复交的高材生的水平真不是盖的,名不虚传,有实力的全能选手。我在刷题的过程中不得不表达一下对他们的钦佩。 这里在遍历顺序上可就有说法了。 如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for…...

openfeign本地试用

目的&#xff1a;在本地搭建一个简单的openfeign使用场景&#xff0c;测试查询、新增等功能 平台&#xff1a;win10 技术栈&#xff1a;Springboot, SpringCloud, Nacos, Mybatis, MySql, Logback 框架作用说明&#xff1a; Nacos用于服务注册&#xff0c;将provider应用注…...

数据库|SQLServer数据库:查询函数(SUM、COUNT、MAX、MIN、AVG)的使用

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 日拱一卒&#xff0c;进一寸有进一寸的欢喜&#xff0c;本节学习数据库查询函数的使用。 以下为学习笔记。 01 求和 SUM&#xff1a;对某一字段列进行求和运算&#xff1b; 示例&#xff1a; 对账号表Account的文章…...

简单Qt贪吃蛇项目

目录 先看效果 项目介绍 界面一&#xff1a;游戏大厅界面 界面二&#xff1a;关卡选择界面​编辑 界面三&#xff1a;游戏界面 游戏大厅页面 游戏关卡选择页面 游戏房间页面 封装贪吃蛇数据结构 初始化游戏房间界面 设置窗口大小、标题、图标等 蛇的移动 初始化贪…...

画菱形(曼哈顿距离)

输入一个奇数 nn&#xff0c;输出一个由 * 构成的 nn 阶实心菱形。 输入格式 一个奇数 nn。 输出格式 输出一个由 * 构成的 nn 阶实心菱形。 具体格式参照输出样例。 数据范围 1≤n≤991≤n≤99 输入样例&#xff1a; 5输出样例&#xff1a; * *** ******** * #i…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...