【Python】【Scrapy 爬虫】理解HTML和XPath

        为了从网页中抽取信息,必须对其结构有更多了解。我们快速浏览HTML、HTML的树状表示,以及在网页上选取信息的一种方式XPath。

HTML、DOM树表示以及XPath

互联网是如何工作的?

当两台电脑需要通信的时候,你必须要连接他们,无论通过有线方式 (通常是网线) 还是无线方式(比如 WiFi 或 蓝牙 )。所有现代电脑都支持这些连接。

但是当电脑多了,两两链接就会需要很多的网线,这个时候我们将网络上的每台电脑接到一个叫做路由器(router的特殊小电脑。路由器只干一件事:就像火车站的信号员,它要确保从一台电脑上发出的一条信息可以到达正确的电脑。

但是我们要连接成百上千,上亿台电脑呢?一台路由器覆盖不了这么远,所以我们为什么不把两个路由器彼此连接呢?我们把电脑连接路由器,接着路由器连接路由器,我们就会有无穷的规模。

这样网络越来越接近我们所说的互联网,但是我们遗漏了一些东西。我们建立网络是为了我们自己的目的。所以不同的人会建立不同的网络:你的朋友,你的邻居,每个人都可以拥有自己的计算机网络。在你的房子和世界其他地方之间架设电缆将这些不同的网络连接起来是不可能的,那么你该如何处理这件事呢?其实已经有电缆连接到你的房子了,比如,电线和电话。电话基础设施已经可以把你家连接到世界的任何角落,所以它就是我们需要的线。为了连接电话这种网络我们需要一种基础设备叫做调制解调器(modem调制解调器可以把网络信息变成电话设施可以处理的信息,反之亦然。

这样,我们可以通过电话基础设施相互连接。下一步是把信息从我们的网络发送到我们想要到达的地方。为了做这些,我们需要把我们的网络连接到互联网服务提供商(Internet Service Provider,ISP)。ISP 是一家可以管理一些特殊的路由器的公司,这些路由器连接其他 ISP 的路由器。你的网络消息可以被 ISP 捕获并发送到相应的网络。互联网就是由这些所有的网络设施所组成。

为了确定信息发送的地址,任何连接到网络中的电脑都需要有一个唯一的地址来标记它,叫做 "IP 地址" (IP 代表网络协议)。这个地址由四部分被点分隔的数字序列组成,比如:192.168.2.10

但是数字对于人来说并不好读,于是我们给 IP 地址取一个容易阅读的别名:域名。比如,google.com 被用于 IP 地址 172.217.7.14。这样我们通过这些域名可以很容易的通过网络连接到电脑。

参考:互联网是如何工作的 - 学习 Web 开发 | MDN (mozilla.org)

How the Internet Works in 5 Minutes (youtube.com)

网页,网站,网络服务器和搜索引擎的区别是什么? - 学习 Web 开发 | MDN (mozilla.org)

什么是超链接? - 学习 Web 开发 | MDN (mozilla.org)

什么是URL?

一个 URL 由不同的部分组成,其中一些是必须的,而另一些是可选的。

http 是协议。它表明了浏览器必须使用何种协议。它通常都是 HTTP 协议或是 HTTP 协议的安全版,即 HTTPS。Web 需要它们二者之一,但浏览器也知道如何处理其他协议,比如 mailto:(打开邮件客户端)或者 ftp:(处理文件传输)。

www.example.com 是域名。它表明正在请求哪个 Web 服务器。或者,可以直接使用IP address,但是因为它不太方便,所以它不经常在网络上使用。

:80 是端口。它表示用于访问 Web 服务器上的资源的技术“门”。如果 Web 服务器使用 HTTP 协议的标准端口(HTTP 为 80,HTTPS 为 443)来授予其资源的访问权限,则通常会被忽略。否则是强制性的。

/path/to/myfile.html 是网络服务器上资源的路径。在 Web 的早期阶段,像这样的路径表示 Web 服务器上的物理文件位置。如今,它主要是由没有任何物理现实的 Web 服务器处理的抽象。

?key1=value1&key2=value2 是提供给网络服务器的额外参数。这些参数是用 & 符号分隔的键/值对列表。在返回资源之前,Web 服务器可以使用这些参数来执行额外的操作。每个 Web 服务器都有自己关于参数的规则,唯一可靠的方式来知道特定 Web 服务器是否处理参数是通过询问 Web 服务器所有者。

#SomewhereInTheDocument 是资源本身的另一部分的锚点。锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在 HTML 文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。值得注意的是,#后面的部分(也称为片段标识符)从来没有发送到请求的服务器。

你可能想到一个 URL 类似普通信件的地址:协议代表你要使用的邮政服务,域名是城市或者城镇,端口则像邮政编码;路径代表着你的信件所有递送的大楼;参数则提供额外的信息,如大楼所在单元;最后,锚点表示信件的收件人。

什么是 URL? - 学习 Web 开发 | MDN (mozilla.org)

有了上面的基础我们就可以讨论下面的问题了。

输入URL到显示页面的全过程

哇这个视频讲的巨好,千万不要错过。What happens when you type a URL into your browser? (youtube.com) 

1.  在地址栏输入链接

2.  浏览器在缓存中找IP

2.1缓存中没有,就在域名服务器(DNS,Domain Name System)中递归查找

3.  浏览器和网站服务器建立TCP连接

4.  浏览器通过建立的TCP连接向网站服务器发送HTTP请求

5.  网站服务器发回HTTP响应

6.  浏览器接收响应并渲染HTML内容

一文彻底搞懂从输入URL到显示页面的全过程_浏览器输入url后发送的过程是先渲染还是先断开了tcp连接-CSDN博客

HTML文档

在大部分浏览器中使用Ctrl+U快捷键可以显示源代码。Example Domains (iana.org)

 

使用XPath选择HTML元素

XPath插件安装。最新版edge浏览器中安装xpath插件_edge浏览器调试xpath-CSDN博客

安装好之后输入快捷键 CTRL + ALT +X即可使用,

打开之后用鼠标选中,就是蓝色的这块区域,如何用CTRL+ALT即可选中。

 

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

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

相关文章

NFT Insider #131:Mocaverse NFT市值破3.5万ETH,The Sandbox 参加NFCsummit

引言:NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理,接下来,看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器负责处理输入序列,将其…

linux解压.zip文件命令详解

在Linux中解压.zip文件,你可以使用unzip命令。如果你的系统中没有安装unzip,你可以使用包管理器来安装它。 Debian的系统(Ubuntu),安装命令: sudo apt-get install unzip基于Red Hat的系统(如…

STM32-11-电容触摸按键

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32电容触摸按键 电容触摸按键原理: 无手指触摸:上电时&…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version:535.40.,那么左边对应的CUDA都可以兼容 右上角为CUDA 版本,可以看…

Linux 防火墙 firewalld 常用命令

1 防火墙 - firewalld 1.1 开启防火墙 # 临时性开启,服务器重启后会恢复为原来的状态 systemctl start firewalld # 永久性开启(即开机启动),重启服务器后生效 systemctl enable firewalld1.2 关闭防火墙 # 临时性关闭&#xf…

基于ViutualBox+Ubuntu(Linux)的开发环境搭建

实际在选择虚拟机的时候纠结了要用virualbox还是vmware,初步比较结果: 1.virualbox能够使用vmware的硬盘格式,因此可以自由选择。 2.都能够实现主机和宿主机之间的文件夹共享。 3.virualbox是自由软件,vmware是商业软件。 在功能上…

LuatOS学习

开发顺序 Lua是脚本语言中运行速度最快的语言 资源占用极低 脚本语言运行方式 脚本语言是从上往下一行一行运行的 变量 coun 123456 a,b,c 1,2,3交换 a,b b,a在测试环境中,用print(a,b)打印 nil类型 未声明的变量就是nil,nil用来表示此变量为空…

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施,利用5G为代表的新一代信息通信技术集成,打造新型工业互联网基础设施。在5G工厂中,自动化和智能化设备广泛使用,高度互联的工厂网络得以实现,远程监控和管理成为可能,…

学习笔记——动态路由协议——OSPF(OSPF网络类型2)

2、OSPF网络类型 常见链路层协议对应的默认网络类型 网络类型 描述 常见链路层协议 Hello报文间隔 报文类型 有无DR、BDR选举 P2P 点对点网络 HDLC、PPP、LAPB 10s 以组播方式发送OSPF报文 有 P2MP 点对多点网络 无 30s 以组播方式发送Hello报文,单…

春秋云境CVE-2018-20604

简介 雷风影视CMS是一款采用PHP基于THINKPHP3.2.3框架开发,适合各类视频、影视网站的影视内容管理程序,该CMS存在缺陷,可以通过 admin.php?s/Template/edit/path/*web*..*..*..*..*1.txt 的方式读取任意文件。 正文 1.进入靶场 2./admin…

移动应用程序设计详解:基本概念和原理

移动应用程序设计是什么? 一般来说,应用程序设计师的核心职责是让用户有体验应用的欲望,而开发者负责让它正常工作。移动应用程序设计包括用户界面 (UI) 和用户体验 (UX)。设计者负责应用程序的整体风格,包括配色方案、字体选择、…

c语言游戏实战(3):三子棋

前言: 三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小,三子棋在很多时候会出现和…

【记录】网络|没有路由器没有网线,分别使用手机或Windows电脑共享网络给ARM64开发板,应急连接

事情是这样的,我的开发板明明已经选择了记住热点 WiFi 密码,但是却没有在开机的时候自动连接,我又没有放显示器在身边,又不想为了这点事去找个显示器来,就非常难受。 我手边有的设备是: 笔记本电脑&#…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的,省赛没出过有两种实方法 定时器配置: 定时器的话要比delay准确,其中tim7定时器的准度最高 定时器预分配配置32 - 1,计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

重置服务器之后 SSH 登录报错:REMOTE HOST IDENTIFICATION HAS CHANGED!

问题原因: 报错是由于远程的主机的公钥发生了变化导致的。ssh服务是通过公钥和私钥来进行连接的,它会把每个曾经访问过计算机或服务器的公钥(public key),记录在~/.ssh/known_hosts 中,当下次访问曾经访问…

【机器学习300问】102、什么是混淆矩阵?

一、混淆矩阵的定义 混淆矩阵是一种用于评估分类模型性能的评估指标。当模型对数据进行预测并将数据分配到预定义的类别时,混淆矩阵提供了一种直观的方式来总结这些预测与数据实际类别之间的对应关系。具体来说,它是一个表格。 二、分类模型性能评估一级…

[AIGC] Nginx常用变量详解

Nginx非常强大,其主要功能包括HTTP服务器、反向代理、负载均衡等。Nginx的配置中有许多内置的变量,你可以在配置文件中使用这些变量进行灵活的配置。在本篇文章中,我们将介绍一些Nginx中常见的变量,包括proxy_add_header。 常见变…

【windows】Total Uninstall:一款功能强大的完全卸载软件

软件介绍 Total Uninstall是一款专业的软件卸载工具,旨在帮助用户彻底地清除计算机上的应用程序,包括与应用程序相关的所有文件和注册表项。以下是Total Uninstall的一些主要功能和特点: 完全卸载:软件可以监视应用程序的安装过程…

Linux-CentOS7-解决vim修改不了主机名称(无法打开并写入文件)

Linux-CentOS7-修改主机名称 修改之后使用强制保存退出也不行。 解决办法: 使用hostnamectl命令进行修改 查看系统主机名和信息: hostnamectl这条命令会显示当前系统的主机名、操作系统信息、内核版本、架构信息等相关信息。 修改系统主机名&#xff1…