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.mfbz.cn/a/208640.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#文件夹基本操作(判断文件夹是否存在、创建文件夹、移动文件夹、删除文件夹以及遍历文件夹中的文件)

目录 一、判断文件夹是否存在 1.Directory类的Exists()方法 2. DirectoryInfo类的Exists属性 二、创建文件夹 1. Directory类的CreateDirectory()方法 2.DirectoryInfo类的Create()方法 三、移动文件夹 1. Directory类的Move()方法 2.DirectoryInfo类的MoveT…

Docker容器间网络共享

Docker容器间网络共享 1、新建网络2、容器绑定网卡3、验证 Docker环境中为了一套应用部署多个环境、并且不修改配置文件的情况下&#xff0c;做到一键部署。要求不同容器直接的网络交互&#xff0c;使用容器名称。 网络相关常用命令 #查看网络内部信息docker network inspect b…

应用于智慧零售的AI边缘计算盒子+AI算法软硬一体化方案

中国是世界上最大的消费市场&#xff0c;零售行业拥有极大的发展潜力&#xff0c;阿里、腾讯两大互联网巨头正在加紧、加大布局&#xff1b; 信迈智慧零售方案可涵盖快消行业、服饰行业、餐饮行业、酒店行业、美家行业、消费电子行业、新零售商行业、服饰连锁、大卖场/商超、百…

详解Linux常用命令

目录 1. ps 命令 2. top 命令 3. grep 命令 4. df 命令 5. tail 命令 6. head 命令 7. cat 命令 8. --help 和 man 命令 9. cd 命令 10. mkdir 命令 11. rm 命令 12. mv 和 cp 命令 13. touch 命令 14. vi 或 vim 命令 15. chmod 修改权限 16. 打包和压缩文件 …

39.从0到上线三天搭建个人网站(第三天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 一、第三天主要工作 1.完成detail页面的开发 2.将所有数据以及部分静态资源存在uniCloud&#xff0c;为以后做管理后台做准备 3.创建云对象getData&#xff0c;在beforecreate&#xff08;&#xff09;中获取数据 4.…

【漏洞复现】智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC

漏洞描述 智跃人力资源管理系统是基于B/S网页端广域网平台,一套考勤系统即可对全国各地多个分公司进行统一管控,成本更低。信息共享更快。跨平台,跨电子设备。智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在SQL注入漏洞,攻击者可通过该漏洞获取数据库中的信…

国内首所国际职业培训学院落户深圳盐田揭幕开业

11月26日&#xff0c;中科国药•中科大有大健康上市企业孵化平台迎来了国内首所国际职业学院——深圳市盐田区国际职业培训学院的正式落成与揭幕仪式。中科大有高新科技有限公司董事长、长江商学院MBA\FMBA金融导师、深圳市中科国药生物医药研究院理事长、深圳市盐田区国际职业…

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

iOS Class Guard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symbol table&#xff0c;这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和 实例变量 名。iOS-Class-Guard不…

java设计模式学习之【桥接模式】

文章目录 引言桥接模式简介定义与用途&#xff1a;实现方式 使用场景优势与劣势桥接模式在Spring中的应用绘图示例代码地址 引言 想象你正在开发一个图形界面应用程序&#xff0c;需要支持多种不同的窗口操作系统。如果每个系统都需要写一套代码&#xff0c;那将是多么繁琐&am…

一小时玩转【负载均衡】

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。 &#x1f60a; 座右铭&#xff1a;不…

流媒体方案之FFmepeg——实现物联网视频监控项目

目录 前言 一、FFmpeg介绍 二、FFmpeg简易理解 三、FFmpeg的重要概念 四、软硬件准备 五、移植、运行FFmpeg 六、运行FFmpeg 前言 最近想做一个安防相关的项目&#xff0c;所以跟着韦东山老师的视频来学习视频监控方案的相关知识&#xff0c;韦东山老师讲的课非常好&…

electron 应用图标修改

修改窗口图标 更换Electron应用程序的桌面图标 准备好你想要作为图标的图片文件&#xff0c;可以是PNG格式安装一个可以转换图片格式为ICO的工具&#xff0c;例如在线转换工具“在线转换icon图标工具”。将你的PNG图片文件上传并转换为ICO格式将转换得到的ICO文件放到你的El…

WPF绘图---Canvas中Polygon屏幕居中显示

问题描述 在一个Canvas中绘制了多个Polygon&#xff0c;由于坐标可能超出界面显示范围&#xff0c;需要将绘制的Polygon居中显示&#xff0c;并且缩放至界面大小&#xff0c;效果如下&#xff1a; xaml代码 <Borderx:Name"border"Background"#fff"Cli…

cocos 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer。(跟随摄像机滚动)(神坑官网也不说明一下)

参考文章&#xff1a;Cocos 3.x 层级Layer - 简书 2D镜头跟随应该怎么实现呢 - Creator 3.x - Cocos中文社区 关于多个摄像机&#xff0c;动态添加节点的显示问题&#xff0c;需要动态修改layer&#xff1f; 场景&#xff1a;在制作摄像机跟随角色移动功能时&#xff0c;新增…

亚马逊云科技re:Invent大会,助力安全构建规模化生成式AI应用

2023亚马逊云科技re:Invent全球大会进入第三天&#xff0c;亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian博士在周三的主题演讲中&#xff0c;为大家带来了关于亚马逊云科技生成式AI的最新能力、面向生成式AI时代的数据战略以及借助生成式AI应用提高生产效率的精彩分…

Echarts大屏可视化_05 折线图的定制开发

继续跟着pink老师学习Echarts相关内容&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 折线图1 1.引入 折线图选取示例地址 标题没有用到就给他删了 直接引入 注意这里是line下面的chart 获取dom元素一定不…

【计算机网络】14、DHCP

文章目录 一、概述1.1 好处 二、概念2.1 分配 IP2.2 控制租赁时间2.3 DHCP 的其他网络功能2.4 IP地址范围和用户类别2.5 安全 三、DHCP 消息3.1 DHCP discover message3.2 DHCP offers a message 如果没有 DHCP&#xff0c;IT管理者必须手动选出可用的 ip&#xff0c;这太耗时了…

抖音获客新攻略:如何通过短视频获取更多潜在客户

**一、开篇** **引子**&#xff1a;随着移动互联网的普及&#xff0c;短视频平台已成为人们获取信息、分享生活的重要渠道。抖音作为其中的佼佼者&#xff0c;以其独特的创意和精美的视频内容吸引了大量用户。对于企业而言&#xff0c;如何利用抖音获取潜在客户&#xff0c;已成…

巨擘OpenMMLab将开源综合音频生成项目:Amphion

项目地址&#xff1a;https://github.com/open-mmlab/Amphion TTS: Text-to-Speech Amphion achieves state-of-the-art performance when compared with existing open-source repositories on text-to-speech (TTS) systems. It supports the following models or architect…

网络运维与网络安全 学习笔记2023.12.1

网络运维与网络安全 学习笔记 第三十二天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全&#xff0c;要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…