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

目录

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. 掌握浏览器开发者工具

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算任务调度优化matlab仿真,对比蚁群优化和蛙跳优化

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 ACO蚁群优化 4.2 蛙跳优化 5.完整程序 1.程序功能描述 云计算任务调度优化,优化目标位任务消耗时间,调度后的经济效益以及设备功耗,对比蚁群优化算法和蛙跳优化…

三星、小米和 OPPO设备实验室将采用Android设备流技术

早在 5 月份的年度开发者大会上,Google就发布了 Android 设备流测试版。开发人员可以在Google数据中心的真实物理设备上更轻松、更互动地测试自己的应用程序,这些设备会直接串流到 Android Studio。今天,Google宣布与三星、小米和 OPPO 合作扩…

关于LLC知识5

RLC的增益曲线不知一条 频率升高,增益会越来越低 无论在容性区还是感性区,当负载加重的时候,R阻值会变小,所以R的分压也会变小,导致增益会变低 当负载突然加重,输出电压会变低,增益曲线由红色变…

如何让左右两个div各占50%,并且高度相同?

如何设置两个div各占一半,并且高度随着内容增加,而且两边div的高度一致呢?默认会发现高度不一致,改用flex就可以了,另外发现传统的table也可以轻易实现。不知道不用flex的话是否可以实现。 方法1(div实现&a…

环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例)

环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例) 为了在Java开发中使用最新的功能和优化,升级和配置JDK版本是必不可少的。本文将详细介绍如何下载、安装、配置最新的JDK版本,并在IntelliJ IDEA…

pikachu文件包含漏洞

一:漏洞基础 程序在引用文件的时,引用的文件名存在可控的情况,传入的文件名没有经过合理的校验或校验不严,从而操作了预想之外的文件,就有可能导致文件泄漏和恶意的代码注入; 文件包含漏洞概念 在PHP程序…

安卓将子模块打aar包,并将其远程依赖打包进去

生成 AAR 包 在Android Studio Terminal 窗口输入以下命令: ./gradlew :monitor:assembleRelease把 monitor 换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件 注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运…

PCIe学习笔记(19)

TLP Prefix(前缀)规则 以下规则适用于任何包含TLP Prefix的TLP: •对于任何TLP, TLP第0字节的Fmt[2:0]字段值为100b表示存在TLP Prefix, Type[4]位表示TLP Prefix的类型。 ◦Type[4]位的值为0b表示存在Local TLP Prefix ◦Type[4]位的值为1b表示存在…

牛客JS题(二十三)判断质数

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 原型链如何优雅的判断质数 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"text/javascript">/*** 素…

Vue引入使用iconfont字体图标

由于element-ui或element-plus提供的图标有时候并不能满足日常需求,所以这篇介绍一下前端引入阿里巴巴矢量图标库使用,不止是vue使用,不限于vue2、vue3,html或是其他框架也是同样的道理,只要引入都是同样可以使用的。 1. 首先进入阿里巴巴矢量图标库官网 官网:https://…

螺旋矩阵

螺旋矩阵 思路&#xff1a; 这题是一个模拟的题目。 可以观察出一些性质&#xff1a;每次需要换方向的时候都是到达了边界&#xff08;长度和宽度的边界&#xff09;。 不知道怎么转化为代码&#xff01; 哭了 看看题解吧&#xff1a;真不会 看到一个太妙的方法了&#x…

初识云计算

随着科技的飞速发展&#xff0c;云计算作为一种新兴的信息技术架构&#xff0c;正在逐渐改变我们的工作方式和生活方式。 云计算是什么&#xff1f; 云计算是一种通过互联网提供计算资源和服务的计算模式。它通过互联网将计算和存储资源进行集中和共享&#xff0c;为用户提供…

zabbix的自动发现和注册、proxy代理和SNMP监控

一、zabbix自动发现和注册 1.概念 zabbix客户端主动的和服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机。 客户端是主动的一方 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现…

Java 处理一张单据,处理花费时间挺久,有单号,不用redis怎么可以快速判断其在处理中,不需要再处理

在Java中处理长时间的任务并且需要避免重复处理同一张单据的情况下&#xff0c;在不使用Redis或其他外部存储服务情况下。 方法一&#xff1a;使用数据库表 表记录记录状态 方法二&#xff1a;使用文件系统 创建和删除文件记录状态 方法三&#xff1a;使用本地缓存 import …

6种常用的AR跟踪方法

增强现实 (AR) 是一项令人着迷的技术&#xff0c;可将虚拟内容与现实世界无缝集成。实现这种无缝集成的关键组件之一是跟踪。各种类型的跟踪用于确定 AR 内容在环境中的准确位置和方向。本文介绍 AR 最常见的6种跟踪方法。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - Y…

Centos安装Mysql

添加MySQL官方的Yum仓库 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm安装MySQL服务器 sudo yum install mysql-community-server在安装过程中遇到了如下错误&#xff1a; 使用如下命令去解决&#xff1a; yum --enablerepomysql80…

Windows下Rust OpenCV环境配置

首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey&#xff0c;Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey&#xff0c;选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…

【Java日志系列】日志概述

目录 前言 一、日志概述 二、日志文件 1. 调试日志 2. 系统日志 三、日志框架 1. 日志框架的作用 2. 日志框架的价值 3. 市面上流行的日志框架 4. 日志门面和日志实现的区别 总结 前言 在软件开发中&#xff0c;日志记录是一项至关重要的任务。无论是简单的命令行应…

CloudCompare—点云切片

文章目录 一、整体功能展示1、必要参数2、其他选项二、代码实现1、提取平面上的包络线2、将点投影到二维平面上3、提取二维凸包三、算法原理参考资料一、整体功能展示 整个点云切片的步骤如下动图所示: 激活点云后,选择切片功能(小立方盒),在点云视图中显示工具栏框,工具…

后期调色学习笔记

关于调色曲线的学习&#xff1a; 学习链接&#xff1a;一看就懂的曲线调色教程【手机摄影后期】_哔哩哔哩_bilibili 从左向右就是由暗部越来越到亮部 越靠近右侧的越是亮部