Python 网络爬虫(一):HTML 基础知识

在这里插入图片描述

《Python入门核心技术》专栏总目录・点这里

文章目录

  • 1. 什么是 HTML
  • 2. HTML 的特点
  • 3. HTML 的标签和属性
  • 4. HTML 的结构
    • 4.1 文档类型声明
    • 4.2 根元素
    • 4.3 头部部分
    • 4.4 主体部分
    • 4.5 表格标签
    • 4.6 区块
    • 4.7 嵌套和层次结构
    • 4.8 表单
    • 4.9 注释
  • 5. HTML 交互事件


大家好,我是水滴~~

在学习爬虫之前,了解HTML基础知识是至关重要的。这是因为爬虫通常通过解析和提取HTML内容来获取数据。HTML(超文本标记语言)是用于构建网页的标准语言,它定义了网页的结构和内容。

当您编写一个网页爬虫时,您的目标是从网页中提取有用的数据。网页通常以HTML的形式呈现,其中包含了各种标签、元素和属性来描述和组织内容。通过理解HTML的结构和语法,您可以准确地定位和提取所需的数据。

爬虫通过解析HTML文档,逐层遍历和检索其中的标签和元素,以获取所需的信息。了解HTML基础知识可以帮助您理解如何定位目标数据所在的标签和元素,并使用适当的属性和方法来提取这些数据。

例如,如果您想要提取网页中的标题,您需要了解<title>标签是用于定义页面标题的,可以使用爬虫工具解析HTML并提取<title>标签中的文本内容。同样地,如果您想要提取网页中的链接或段落,您需要了解相关的HTML标签(如<a><p>)以及它们的属性和嵌套关系。

1. 什么是 HTML

HTML(HyperText Markup Language)是一种用于创建网页的标记语言。它由一系列的标签(tags)组成,这些标签描述了网页中的不同元素和内容的结构。HTML标签用于定义文本、图像、链接、表格、表单等在网页上的展示和交互方式。

HTML不是一种编程语言,而是一种标记语言,它使用标签来标记和描述文档的结构和内容。浏览器可以解析HTML文档,并将其呈现为可视化的网页。

HTML文档由嵌套的HTML元素组成,每个元素由一个开始标签(opening tag)和一个结束标签(closing tag)组成,中间是元素的内容。例如,<p>标签用于定义段落,<img>标签用于插入图像。

以下是一个简单的HTML示例:

<!DOCTYPE html>
<html>
<head><title>我的网页</title>
</head>
<body><h1>欢迎来到我的网页!</h1><p>这是一个段落。</p><img src="image.jpg" alt="图片">
</body>
</html>

在上面的示例中,<!DOCTYPE html>声明指定了HTML5文档类型。<html>标签是HTML文档的根元素,包含了整个网页的内容。<head>标签包含了与网页相关的设置和元数据,如标题(<title>标签)和链接到外部样式表或脚本文件。<body>标签包含了网页的实际内容,如标题、段落和图像。

通过使用不同的HTML标签和属性,开发者可以创建出丰富多样的网页内容,并通过CSS(层叠样式表)和JavaScript等技术来实现更复杂的样式和交互效果。

2. HTML 的特点

HTML语言具有以下特点:

  • 标记语言:HTML是一种标记语言,使用标签(tags)来标记和描述文档的结构和内容。标签通过尖括号进行界定,如<tag>

  • 结构化:HTML提供了一种结构化的方式来组织网页内容。通过使用不同的标签,可以将内容划分为段落、标题、列表、表格等不同的部分,使内容具有层次结构。

  • 跨平台和跨浏览器:HTML是一种跨平台的语言,可以在不同的操作系统和设备上使用。同时,HTML也是跨浏览器兼容的,可以在各种现代浏览器中正确解析和显示网页内容。

  • 可扩展性:HTML具有良好的扩展性,通过使用自定义的标签和属性,可以扩展HTML的功能和语义,以满足特定的需求。

  • 多媒体支持:HTML支持多种多媒体元素,如图像(<img>)、音频(<audio>)和视频(<video>)。这使得开发者可以在网页中嵌入丰富的媒体内容。

  • 链接和导航:HTML提供了超链接(<a>)来创建链接到其他页面或资源的链接。这使得用户可以通过点击链接在不同的页面之间进行导航。

  • 容易学习和使用:相对于其他编程语言,HTML具有较低的学习曲线。它的语法简单明了,标签具有直观的含义,对于初学者来说比较容易理解和上手。

尽管HTML本身不能实现复杂的逻辑和交互功能,但它是构建网页的基础,可以与CSS和JavaScript等技术结合使用,实现更丰富的用户体验和功能。

3. HTML 的标签和属性

HTML标签是HTML文档中用于定义元素的标记。每个HTML标签表示不同的元素,并用于描述和结构化文档的内容。以下是一些常见的HTML标签及其介绍:

  • <html>:HTML文档的根元素,包含整个网页的内容。

  • <head>:定义文档的头部,包含与文档相关的设置和元数据,如标题、样式表和脚本文件等。

  • <title>:定义文档的标题,通常显示在浏览器的标题栏或页签上。

  • <body>:定义文档的主体部分,包含网页的实际内容,如文本、图像、链接等。

  • <h1><h6>:定义标题,级别从1到6递减,其中<h1>表示最高级标题。

  • <p>:定义段落。

  • <a>:创建链接到其他页面或资源。

  • <img>:插入图像。

  • <ul><li>:创建无序列表。

  • <ol><li>:创建有序列表。

  • <div>:通用的容器,用于组合其他元素。

  • <span>:行内容器,用于对文本进行分组或样式化。

  • <table><tr><td>:创建表格和表格行、单元格。

  • <form><input><button>:创建表单和表单元素,如文本输入框、按钮等。

  • <select><option>:创建下拉列表框和选项。

  • <textarea>:创建多行文本输入框。

  • <iframe>:插入一个内联框架,用于显示其他页面或嵌入内容。

除了HTML标签,每个标签可以具有一些属性,用于提供元素的额外信息或控制元素的行为。常见的HTML属性包括:

  • class:指定元素的类名,用于选择性地应用CSS样式或JavaScript操作。

  • id:指定元素的唯一标识符,用于JavaScript操作或通过锚点链接直接跳转到元素。

  • src:指定图像、音频或视频等媒体元素的源文件路径。

  • href:指定链接元素的目标URL。

  • style:直接在元素上应用内联样式,包含CSS属性和值。

  • disabled:禁用表单元素或按钮。

  • placeholder:在文本输入框中提供默认的提示文本。

这只是一小部分常见的HTML标签和属性示例,HTML提供了众多标签和属性,每个用途不同。开发者可以根据需要选择适当的标签和属性来构建网页的结构和功能。

4. HTML 的结构

HTML的结构是通过嵌套和组合不同的HTML标签和元素来实现的。开发者可以根据需要创建适当的结构,以便组织和呈现网页的内容。良好的HTML结构有助于提高代码的可读性、维护性和可访问性。

4.1 文档类型声明

每个HTML文档都应该以文档类型声明(Document Type Declaration)开始,它告诉浏览器使用哪个HTML版本解析文档。以下是HTML5的文档类型声明:

<!DOCTYPE html>

确保将这行声明放在HTML文档的最顶部,并位于<html>标签之前。

4.2 根元素

HTML文档的根元素是<html>标签,它包含整个网页的内容。以下是一个基本的HTML结构示例:

<!DOCTYPE html>
<html>
<head><title>我的网页</title>
</head>
<body><!-- 网页内容在这里 -->
</body>
</html>
  • <head>:头部部分包含了一些元数据和与网页相关的设置。例如,可以在<head>中设置网页的标题(<title>标签)和链接到外部样式表或脚本文件。

  • <body>:主体部分包含了网页的可见内容,如文本、图像、链接等。

4.3 头部部分

头部部分包含了网页的元数据和其他配置信息。以下是一些常见的头部标签:

  • <title>:定义网页的标题,显示在浏览器的标题栏或选项卡上。

  • <meta>:提供关于网页的元数据,如字符编码、描述和关键字等。

  • <link>:用于链接外部资源,如样式表和图标文件。

  • <script>:用于引入JavaScript脚本文件。

<head><title>我的网页</title><meta charset="UTF-8"><meta name="description" content="这是我的网页"><link rel="stylesheet" href="styles.css"><script src="script.js"></script>
</head>

4.4 主体部分

主体部分包含了网页的实际内容,如文本、图像、链接等。以下是一些常见的主体标签:

  • 标题标签:<h1><h6>,用于定义标题的级别和重要性。

  • 段落标签:<p>,用于定义段落。

  • 链接标签:<a>,用于创建链接到其他页面或资源的超链接。其中href属性为目标链接地址。

  • 图像标签:<img>,用于插入图像。其中src属性为图片链接地址,alt属性为提示语。

  • 列表标签:<ul><ol>,用于创建无序列表和有序列表。

<body><h1>这是一级标题。</h1><h2>这是二级标题。</h2><h3>这是三级标题。</h3><p>这是一个段落。</p><a href="https://www.example.com">这是一个链接</a><img src="image.jpg" alt="图片"><ul><li>列表项1</li><li>列表项2</li></ul>
</body>

4.5 表格标签

HTML提供了<table>标签用于创建表格。表格由行和列组成,使用<tr>(表格行)和<td>(表格数据)标签来定义。以下是一个简单的表格示例:

<table><tr><th>姓名</th><th>年龄</th></tr><tr><td>小明</td><td>25</td></tr><tr><td>小红</td><td>30</td></tr><tr><td>小李</td><td>28</td></tr>
</table>

在上面的示例中,<table>标签用于创建表格,<tr>标签用于定义表格的行,<th>标签用于定义表格的表头单元格,<td>标签用于定义表格的数据单元格。使用适当的标签和嵌套关系来构建你想要的表格结构。

4.6 区块

<div><span>是两个常用的HTML标签,用于在网页中创建和组织内容。

  • <div>标签是一个块级元素,用于定义一个通用的容器块。它通常用于将一组相关的HTML元素组织在一起,形成一个独立的区块。<div>标签没有特定的语义含义,可以根据需要应用自定义的样式和功能。常用于布局、分组、包装等目的。

示例:

<div><h1>这是一个标题</h1><p>这是一段文本。</p>
</div>
  • <span>标签是一个内联元素,用于将文本或其他内联元素包裹起来,以便对其应用样式或标记。<span>标签类似于<div>标签,但作用于内联元素而不是块级元素。它通常用于对文本的部分内容进行样式化、高亮或其他处理。

示例:

<p>这是一段包含<span style="color: red;">红色文本</span>的段落。</p>

需要注意的是,<div><span>标签本身没有特定的样式或功能,它们主要用于组织和标记内容,以便进行样式化和操作。通过CSS样式或JavaScript脚本,可以对<div><span>标签及其内部的内容进行更具体的处理和控制。

4.7 嵌套和层次结构

HTML允许在标签内嵌套其他标签,从而创建层次结构。这对于构建复杂的网页布局非常有用。以下是一个嵌套示例:

<body><div><h2>标题</h2><p>这是一个段落。</p><table><tr><th>姓名</th><th>年龄</th></tr><tr><td>小明</td><td>25</td></tr><tr><td>小红</td><td>30</td></tr><tr><td>小李</td><td>28</td></tr></table></div>
</body>

4.8 表单

HTML表单(HTML Form)用于收集用户输入的数据。它是构建交互性网页的重要组成部分。通过HTML表单,用户可以输入文本、选择选项、提交数据等操作。

下面是一个基本的HTML表单结构:

<form action="/submit" method="POST"><label for="name">姓名:</label><input type="text" id="name" name="name" required><label for="email">邮箱:</label><input type="email" id="email" name="email" required><label for="message">留言:</label><textarea<form action="/submit" method="POST"><label for="name">姓名:</label><input type="text" id="name" name="name" required><label for="email">邮箱:</label><input type="email" id="email" name="email" required><label for="message">留言:</label><textarea id="message" name="message" required></textarea><input type="submit" value="提交">
</form>

在上面的示例中,<form>标签用于创建一个表单,其中包含了三个字段:姓名、邮箱和留言。每个字段都由一个<label>标签和一个输入元素(<input><textarea>)组成。<label>标签用于描述输入字段的标签文本,并通过for属性与对应的输入元素建立关联。输入元素的类型通过type属性指定,例如type="text"表示文本输入框,type="email"表示邮箱输入框。<textarea>标签用于创建多行文本输入框。

表单中的最后一个元素是一个提交按钮,由<input>元素的type="submit"来表示。当用户点击提交按钮时,表单数据将被发送到指定的URL(由action属性指定),并使用指定的HTTP方法(由method属性指定,通常是GET或POST)进行提交。

通过使用不同类型的输入元素和属性,以及一些额外的属性和标签,可以进一步定制和扩展HTML表单,以满足各种需求。

4.9 注释

HTML注释用于在文档中添加注释或临时禁用代码。注释不会在浏览器中显示。以下是HTML注释的示例:

<body><!-- 这是一个注释 --><h1>欢迎来到我的网页!</h1>
</body>

通过理解和应用HTML的结构,你可以构建出功能丰富、美观的网页。希望这篇HTML结构的详细教程对你有所帮助!如果你有任何问题或需要更多的示例,请随时向我提问。

5. HTML 交互事件

HTML提供了一些与用户交互和元素操作相关的事件,可以通过JavaScript来处理这些事件。以下是一些常见的HTML事件:

  • onclick:当元素被点击时触发。

  • onmouseover:当鼠标指针移动到元素上方时触发。

  • onmouseout:当鼠标指针移出元素时触发。

  • onkeydown:当按下键盘上的任意键时触发。

  • onkeyup:当释放键盘上的任意键时触发。

  • onsubmit:当表单提交时触发。

  • onchange:当元素的值发生改变时触发(适用于输入框、下拉列表等)。

  • onload:当页面或图片加载完成时触发。

  • onunload:当页面即将关闭或离开时触发。

这只是一小部分常见的HTML事件,实际上还有很多其他事件可用。可以将这些事件与HTML元素的属性结合使用,例如<button onclick="myFunction()">点击我</button>,其中onclick属性指定了点击按钮时要调用的JavaScript函数。

通过JavaScript,可以编写事件处理程序(event handler)来响应这些事件。事件处理程序是一段JavaScript代码,用于定义在事件发生时要执行的操作。例如,可以使用事件处理程序来更改元素的样式、更新文本内容、发送HTTP请求等。

示例:

<button onclick="changeText()">点击我</button><script>
function changeText() {document.getElementById("myElement").innerHTML = "新的文本";
}
</script>

在上面的示例中,当按钮被点击时,changeText()函数将被调用,并通过document.getElementById("myElement")获取到具有id为"myElement"的元素,并更新其内容为"新的文本"。

通过使用HTML事件和JavaScript,可以实现与用户交互和页面元素操作相关的动态功能和效果。

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

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

相关文章

#zookeeper集群+kafka集群

kafka3.0之前是依赖于zookeeper的。 zookeeper是开源&#xff0c;分布式的架构。提供协调服务&#xff08;Apache项目&#xff09; 基于观察者模式涉及的分布式服务管理架构。 存储和管理数据。分布式节点上的服务接受观察者的注册。一旦分布式节点上的数据发生变化&#xf…

【快速见刊|投稿优惠】2024年机电一体与自动化技术国际学术会议(IACMAT 2024)

2024年机电一体与自动化技术国际学术会议(IACMAT 2024) 2024 International Academic Conference on Mechatronics and Automation Technology(IACMAT 2024) 一【会议简介】 2024年机电一体与自动化技术国际学术会议(IACMAT 2024)即将召开&#xff0c;它以“机电一体&#xff0…

2023年【安全员-B证】最新解析及安全员-B证免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-B证最新解析是安全生产模拟考试一点通生成的&#xff0c;安全员-B证证模拟考试题库是根据安全员-B证最新版教材汇编出安全员-B证仿真模拟考试。2023年【安全员-B证】最新解析及安全员-B证免费试题 1、【多选题…

用友U8 ERP和面粉行业专版系统接口集成方案

面粉加工行业面临着数据管理和业务流程自动化的挑战。众诚ERP系统和用友U8系统的数据集成是解决这一挑战的关键。 解决方案 轻易云平台提供了一套完善的数据同步和集成解决方案&#xff0c;包括以下几个方面&#xff1a; 基础资料同步&#xff1a;包括物料、客户、供应商、仓…

解决:AttributeError: ‘NoneType’ object has no attribute ‘shape’

解决&#xff1a;AttributeError: ‘NoneType’ object has no attribute ‘shape’ 文章目录 解决&#xff1a;AttributeError: NoneType object has no attribute shape背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时&…

【数值计算方法(黄明游)】矩阵特征值与特征向量的计算(二):Jacobi 过关法(Jacobi 旋转法的改进)【理论到程序】

文章目录 一、Jacobi 旋转法1. 基本思想2. 注意事项 二、Jacobi 过关法1. 基本思想2. 注意事项 三、Python实现迭代过程&#xff08;调试&#xff09; 矩阵的特征值&#xff08;eigenvalue&#xff09;和特征向量&#xff08;eigenvector&#xff09;在很多应用中都具有重要的数…

c语言:模拟实现atoi函数

atoi函数的功能和用法&#xff1a; 主要功能&#xff1a;将字符串转换为整数。例如&#xff0c;将字符类型的“123”转换为整数123. #include <stdio.h> #include <stdlib.h>int main() {char str[] "123";int num atoi(str);printf("Converted …

【matlab程序】画海洋流场

【matlab程序】画海洋流场 clear;clc; file ( ‘0227.nc’); latncread(file,‘latitude’); lonncread(file,‘longitude’); uncread(file,‘water_u’); vncread(file,‘water_v’); [x,y]meshgrid(lon,lat); xx’; yy’; interval4; figure (1) set(gcf,‘color’,[1 1 1…

3D云参观红色革命纪念馆允许更多人在线交流、体验

生活在和平年代的新一代青少年&#xff0c;可能对革命先烈英勇事迹难以有很深的体会&#xff0c;无法切实感受到中国共产党无畏牺牲、誓死保家卫国的红色精神&#xff0c;因此借助VR虚拟现实制作技术&#xff0c;让参观者们走近革命先烈中&#xff0c;感受老一辈无产阶级革命家…

domjudge题目配置和开比赛

系统使用的是7.3.3&#xff0c;domjudge配置的方法请参考前文 domjudge配置-CSDN博客 题目导入 传统比较 首先可以去domjudge中随便下载一个题目&#xff0c;下载下来的压缩包应该是这样的 │ domjudge-problem.ini │ problem.pdf │ problem.yaml │ └─data└─sec…

模型层(回顾补充)

1.1基本使用 orm框架---》对象关系映射 数据库中&#xff1a;一个个表 &#xff1a;user表&#xff0c;book表&#xff0c;一条条的记录 程序中&#xff1a;一个个类&#xff0c;一个个对象 以后数据库中一张表---》对应程序中一个类 以后数据库中一条记录--》对应…

12月01日,每日信息差//阿里国际发布3款AI设计生态工具//美团买菜升级为“小象超市”//外国人永居证换新、6国游客免签来华

_灵感 &#x1f396; 阿里国际发布3款AI设计生态工具 &#x1f384; AITO问界系列11月交付新车18827辆 &#x1f30d; 美团买菜升级为“小象超市” &#x1f30b; 全球首个金融风控大模型国际标准出炉&#xff0c;由腾讯牵头制定 &#x1f381; 支付宝&#xff1a;支持外国人…

Python函数关键字参数及用法

在定义 Python 函数时可定义形参&#xff08;形式参数的意思&#xff09;&#xff0c;这些形参的值要等到调用时才能确定下来&#xff0c;由函数的调用者负责为形参传入参数值。简单来说&#xff0c;就是谁调用函数&#xff0c;谁负责传入参数值。 Python 函数的参数名不是无意…

Appium 元素定位与常用方法,让你轻松玩转自动化测试!

对测试人来说&#xff0c;Appium 是非常重要的一个开源跨平台自动化测试工具&#xff0c;它允许测试人员在不同的平台&#xff08;iOS、Android 等&#xff09;使用同一套 API 来写自动化测试脚本&#xff0c;这样可大幅提升代码复用率和工作效率。 本文汇总了从 Appium 基础到…

Python列表切片操作详解:提取、复制、反转等应用示例

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;列表切片是处理列表数据非常强大且灵活的方法。本文将全面探讨Python中列表切片的多种用法&#xff0c;包括提取子列表、复制列表、反转列表等操作&#xff0c;结合丰富的示例代码进行详细…

直饮水表与智能水表有哪些区别?

随着科技的不断进步,智能家居的概念正逐渐深入人们的生活。其中,直饮水表和智能水表作为创新科技的代表,在水资源的使用和管理方面发挥了重要作用。然而,这两者之间存在一些关键的区别。那么&#xff0c;直饮水表与智能水表到底有哪些区别呢&#xff1f; 直饮水表和智能水表都是…

java+springboot学生宿舍公寓管理系统xueshenggongy

经过查阅资料和调查统计发现&#xff0c;高校学生宿舍管理工作变得越来越繁重和琐碎&#xff0c;如在学生住宿安排&#xff08;特别是新生住宿安排&#xff09;、宿舍大幅调换、公共设施统计维护、宿舍杂费统计收取、宿舍卫生管理统计、出入登记记录等各个方法存在着大量问题和…

【Python 训练营】N_14 文件查找和替换

题目 新建一个test3.txt文件&#xff0c;内容如下图&#xff0c;然后从中查找字符串’five’&#xff0c;并统计出现的次数&#xff1b;替换其中的’five’字符串为’python’。 分析 类似Excel中的查找和替换&#xff0c;查找相应内容需用到正则&#xff0c;还考察文件打开、…

Leecode 【一】

环形链表: 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…

以太网PHY,MAC接口

本文主要介绍以太网的 MAC 和 PHY&#xff0c;以及之间的 MII&#xff08;Media Independent Interface &#xff0c;媒体独立接口&#xff09;和 MII 的各种衍生版本——GMII、SGMII、RMII、RGMII等。 简介 从硬件的角度看&#xff0c;以太网接口电路主要由MAC&#xff08;M…