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

news2024/11/16 0:50:25

在这里插入图片描述

《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.coloradmin.cn/o/1277185.html

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

相关文章

Postman Post请求上传文件

Postman Post请求上传文件 一、选择post请求方式&#xff0c;输入请求地址 二、填写Headers Key&#xff1a;Content-Type Value&#xff1a;multipart/form-data [{"key":"Content-Type","value":"multipart/form-data","de…

CSS 滚动捕获 scroll-padding

scroll-padding 非滚动捕获容器滚动捕获容器语法兼容性 CSS 滚动捕获 scroll-padding 设置元素的滚动内边距, 就像 padding 所做的那样. 但并不影响布局. 非滚动捕获容器 我们先来看看不影响布局到底是什么意思. 我们平时会见到左侧是内容, 右侧是内容导航的页面, 比如下图 这…

uniApp打包的手机app如果用户没开启通知权限、引导用户开启

封装一个setPermissions.js文件 /*** 如果用户没开启通知权限、引导用户开启 */ export function setPermissions() {// #ifdef APP-PLUS if (plus.os.name Android) {var main plus.android.runtimeMainActivity();var pkName main.getPackageName();var uid main.getApp…

Python项目管理利器poetry我愿称之为神!

MongoDB是一种流行的NoSQL数据库&#xff0c;它以灵活的文档结构存储数据。MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包&#xff0c;你可以从MongoDB官网下载安装&#xff0c;MongoDB 预编译二进制包下载地址&#xff1a; https://www.mongodb.com/try/download/…

5.C转python

新始: 13.列表可被改变(数据),元组不可被改变(数据),二者皆与C中的数组的大致相同 14.创建列表方法: 1.一个[ ]就是一个空的列表 2.使用list函数来创建列表 如: 15.可以在[ ]内部指定列表的初始值,打印方法: 如: 16.在python中,在同一个列表中,可以放不同类型的变量(也可…

centos7 yum安装nginx

1.安装源 yum install epel-release 2.安装 (-y 的意思是自动yes) yum install nginx -y 3.查找安装到哪里了 whereis nginx 一般都是在 /etc/nginx下面 4.常用命令 检查配置文件是否正确 nginx -t 启动 systemctl start nginx 查看状态 systemctl status nginx 设置开…

为XiunoBBS4.0开启redis缓存且支持密码验证

修改模块文件1 xiunoPHP/cache_redis.class.php: <?phpclass cache_redis {public $conf array();public $link NULL;public $cachepre ;public $errno 0;public $errstr ;public function __construct($conf array()) {if(!extension_loaded(Redis)) {return $thi…

大数据技术之Oozie

大数据技术之Oozie 第1章 Oozie简介 Oozie英文翻译为&#xff1a;驯象人。一个基于工作流引擎的开源框架&#xff0c;由Cloudera公司贡献给Apache&#xff0c;提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任…

【技术分享】RK356X Android11 以太网共享4G网络

本文基于IDO-SBC3566-V1B Android11系统实现开机后以太网自动共享4G网络功能。 IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板&#xff0c;采用四核A55,主频高达1.8GHz&#xff0c;专为个人移动互联网设备和AIOT设备而设计&#xff0c;内置了多种功能强大的嵌…

docker踩坑记录:docker容器创建doris容器间无法通讯问题

背景&#xff1a; 开发大数据平台&#xff0c;使用doris作为数据仓储&#xff0c;使用docker做集群部署&#xff0c;先进行开发环境搭建&#xff0c;环境为BE1;FE1&#xff0c;原来使用官方例子&#xff0c;但是官方例子是创建了一个bridge使用172.20.80.0/24通讯&#xff0c;…

设计模式---第四篇

系列文章目录 文章目录 系列文章目录前言一、说说策略模式在我们生活的场景?二、知道责任链模式吗?三、了解过适配器模式么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

【集合篇】Java集合概述

Java 集合概述 集合与容器 容器&#xff08;Container&#xff09;是一个更广泛的术语&#xff0c;用于表示可以容纳、组织和管理其他对象的对象。它是一个更高层次的概念&#xff0c;包括集合&#xff08;Collection&#xff09;在内。集合&#xff08;Collection&#xff0…

Linux下为可执行文件添加图标

Ubuntu 18.04上使用Qt5.14.2创建一个简单的Qt Widgets项目test&#xff0c;添加2个Push Button按钮&#xff0c;点击分别获取github和csdn地址&#xff0c;在mainwindow.cpp中添加的代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" #inclu…

shell 脚本计算距离最近的坐标

shell 脚本计算距离最近的坐标 坐标数据文件geo.log格式如下&#xff1a; beijing(116.405285,39.904989) tinajin(117.190182,39.125596) hebei(114.502461,38.045474) shanxi(112.549248,37.857014) neimenggu(111.670801,40.818311) liaoning(123.429096,41.796767) jilin(1…

LeetCode | 100. 相同的树

LeetCode | 100. 相同的树 OJ链接 判断两个节点是否等于空&#xff0c;两个都等于空就直接返回true如果一个等于空&#xff0c;另一个不等于空&#xff0c;说明false然后再判断两个树的值是否相等最后递归p的左&#xff0c;q的左&#xff0c;p的右&#xff0c;q的右 bool isS…

SIP协议在语音通信的应用方式及OKCC系统中的配置方法

在企业语音通信的过程中&#xff0c;SIP协议支持的网络通信技术通过网络为用户提供了无数的通信便利&#xff0c;已成为企业不可或缺的重要通信技术。由于SIP协议是语音通信帮助企业实现这些优势的原因&#xff0c;因此了解支持这些呼叫的SIP协议的上下文至关重要。 什么是SI…

大数据之HBase(二)

Master详细架构 位置&#xff1a;namenode实现类&#xff1a;HMaster组成 负载均衡器&#xff1a;通过meta了解region的分配&#xff0c;通过zk了解rs的启动情况&#xff0c;5分钟调控一次分配平衡元数据表管理器&#xff1a;管理自己的预写日志&#xff0c;如果宕机&#xff…

Hertz 整合swagger

文章目录 Swagger安装使用用法项目demoSwagger注释用法通用API信息 swag命令行参数swagger路由配置 Swagger 安装 go get 安装可执行文件需要配合 GOPATH 模式工作。 go get github.com/swaggo/swag/cmd/swag 因为从 Go 1.17 开始&#xff0c;在 go mod 模式下通过 go get 下…

java ssh犯罪数据可视化系统eclipse开发mysql数据库MVC模式java编程网页设计

一、源码特点 JSP ssh犯罪数据可视化系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.…

SpringBoot整合Activiti7——消息事件(十)

文章目录 消息事件开始事件中间事件边界事件代码实现xml文件测试流程流程执行步骤 消息事件 消息事件只有一个接收者&#xff0c;消息具有名字与载荷。 信息会储存在 act_ru_event_subscr 表中。 <!-- 定义消息 --> <message id"msgId1" name"msgName…