【Python爬虫开发基础⑤】HTML概述与基本标签详解

专栏:python网络爬虫从基础到实战 欢迎订阅!近期还会不断更新~
往期推荐
【Python爬虫开发基础①】Python基础(变量及其命名规范)
【Python爬虫开发基础②】Python基础(正则表达式)
【Python爬虫开发基础③】Python基础(文件操作方法汇总)
【Python爬虫开发基础④】爬虫原理
上一篇文章已经介绍了爬虫的概念以及常见的爬虫和反爬手段,本篇文章来简单说一下前端的HTML知识


文章目录

  • 1 什么是HTML
  • 2 为什么要学习HTML
  • 3 标签的介绍
  • 4 标签的语法
  • 5 常用标签


1 什么是HTML

HTML(Hypertext Markup Language)是一种标记语言,用于创建和呈现网页。它是构建网页的基础,并且具有简单易学的语法规则。HTML以标签为基本单位,通过嵌套和属性来描述和格式化网页上的内容和结构。

HTML最初由蒂姆·伯纳斯-李(Tim Berners-Lee)在1990年创造,旨在促进信息共享和互联网上各种文档之间的链接。如今,HTML成为了万维网的核心技术之一,被广泛应用于网页制作、网站开发和跨平台内容交互等领域。

网页由三部分组成:

  1. 内容(结构):是我们在页面中可以看到的数据。我们称之为内容。一般内容我们使用html技术来展示。
  2. 表现:指的是这些内容在页面上的展示形式。比如说。布局,颜色,大小等等。一般使用CSS技术实现。
  3. 行为:指的是页面中元素与输入设备交互的响应。一般使用javascript技术实现。

每一个网页显示的元素都是由HTML代码构成的,我们可以通过下图的操作看到HTML代码,我们爬虫正是要获得这些代码,通过解析获得我们想要的数据。
在这里插入图片描述


2 为什么要学习HTML

学习爬虫时,学习HTML(Hypertext Markup Language)是非常重要的,因为HTML是构建网页的基础标记语言。了解和掌握HTML对于理解网页结构、获取网页内容以及编写高效的爬虫程序至关重要。

  1. 网页结构理解:学习HTML可以帮助我们了解网页的结构,包括标签、元素、属性等。在爬虫中,我们需要解析网页的结构来定位所需的数据,而HTML提供了各种标签和嵌套规则,通过学习HTML可以更好地理解页面的组成部分和它们之间的层次关系。
  2. 页面内容抓取:学习HTML可以帮助我们抓取网页上的内容。网页中的各种文本、图片、链接、表格等信息都是通过HTML标记来定义和呈现的,了解HTML语法和元素可以有效地筛选出我们需要的数据,并将其提取到爬虫程序中进行后续处理和分析。
  3. 元素属性识别:HTML标签通常有一些属性,这些属性可以提供有关元素的额外信息,如id、class、href等。通过学习HTML,我们可以学会如何利用这些属性来定位和识别特定的网页元素。在爬虫中,准确定位需要抓取的数据是非常重要的,而HTML标签的属性可以帮助我们精确地找到目标信息。
  4. 网页动态内容:现代网页通常包含大量的JavaScript代码,用于动态生成和更新页面内容。学习HTML可以让我们理解与JavaScript交互时网页的变化。当我们遇到需要爬取动态加载的页面时,对HTML的基本了解可以帮助我们分析网页结构以及JavaScript代码的作用,从而编写适应性强的爬虫程序。
  5. 错误处理和调试:学习HTML可以使我们更好地处理和调试爬虫程序中的错误。当爬虫程序无法正常工作或者抓取到错误的数据时,对HTML的理解可以帮助我们迅速定位问题所在,并针对性地进行修复和调试。

总之,学习HTML对于爬虫开发人员来说,是掌握有效抓取网页内容的基础。它不仅能帮助我们理解网页的结构、获取所需的数据,还能提高爬虫程序的稳定性和效率。通过学习HTML,我们可以更好地应对各种不同类型的网页,并编写出功能强大且适应性广泛的爬虫程序。因此,在学习爬虫时,HTML是一项必不可少的技能。


3 标签的介绍

  1. 标签格式
<标签名>封装的数据</标签名>
  1. 标签名大小写不敏感
  2. 标签拥有自己的属性
<!--1.基本属性(可以修改简单的样式效果)-->
bgcolor = "red"
<!--2.事件属性(可以直接设置事件影响后的代码)-->
onclick = "alert('你好');"
  1. 标签分为单标签和双标签
<!--1.单标签-->
<br/>
<!--2.双标签-->
<标签名>封装的数据</标签名>

在这里插入图片描述
在这里插入图片描述


4 标签的语法

  1. 标签不能交叉嵌套,例如:
正确:<div><span>正确的</span></div>
错误:<div><span>错误的</div></span>	<!--Element span is not closed-->
  1. 标签必须正确关闭(闭合) ,例如:
正确:<div>正确的</div>
错误:<div>错误的(后面少了结束标签)
  1. 单标签一定要带上自结束符
  2. 属性必须有值,且值要加引号
正确:<font color="blue">正确的</font>
错误:<font color=blue>错误1</font>
错误:<font color>错误2</font>
  1. 注释不能嵌套
正确:<!-- 注释内容 --> <br/>
错误:<!-- 注释内容 <!-- 注释内容 -->-->

但是,浏览器往往都带有自动修复功能,面对各种语法错误,浏览器会尽可能的帮我们表达出我们想要表达的意思,所以有时候即使出现语法错误,在浏览器中也不会表现出来。


5 常用标签

  • 当我们在IDE创建一个HTML文件,它会自动生成一个框架代码:
<!DOCTYPE html>             <!--  HTML页面的开始  -->
<html lang="en">            <!--  指定网页的语言  -->
<head>                      <!--  头信息  -->
    <meta charset="UTF-8">  <!--  指定网页的字符编码  -->
    <title>Title</title>    <!--  标题  -->
</head>
<body>                      <!--  页面的主体内容  -->
	Html 的代码注释 <!-- 这是 html 注释,可以在页面右键查看源代码中看到 -->
</body>
</html>                     <!--  HTML页面的开始  -->

当我们改变title的值,就可以改变网页打开时的标签题目。例如:

<title>我是标题</title>

效果:
在这里插入图片描述

  • font(字体)标签,它可以用来修改文本的字体,颜色,大小(尺寸)。例如:
<font color="red" face="宋体" size="7">我是字体标签</font>

color属性修改颜色;face属性修改字体;size属性修改文本大小

  • 特殊字符
<!-- 常用的特殊字符:
	<	===>>>>		&lt;
	>   ===>>>>		&gt;
   空格	===>>>>		&nbsp;
-->
我是&lt;br&gt;标签<br/>
H&nbsp;&nbsp;T&nbsp;&nbsp;M&nbsp;&nbsp;L
  • 标题标签
<!-- 标题标签
     h1 - h6 都是标题标签
     h1 最大
     h6 最小
        align 属性是对齐属性
            left		左对齐(默认)
            center		剧中
            right		右对齐
 -->

<h1 align="left">111</h1>
<h2 align="center">222</h2>
<h3 align="right">333</h3>
<h4>444</h4>
<h5>555</h5>
<h6>666</h6>
  • 超链接标签
<!-- a标签是 超链接
 		href属性设置连接的地址
 		target属性设置哪个目标进行跳转
 			_self		表示当前页面(默认值)
 			_blank		表示打开新页面来进行跳转
 -->
<a href="http://localhost:8080">按钮</a><br/>
<a href="http://localhost:8080" target="_self">按钮_self</a><br/>
<a href="http://localhost:8080" target="_blank">按钮_blank</a><br/>
  • img标签
<!--img标签是图片标签,用来显示图片
        src属性可以设置图片的路径
        width属性设置图片的宽度
        height属性设置图片的高度
        border属性设置图片边框大小
        alt属性设置当指定路径找不到图片时,用来代替显示的文本内容

    在JavaSE中路径也分为相对路径和绝对路径.
        相对路径:从工程名开始算

        绝对路径:盘符:/目录/文件名

    在web中路径分为相对路径和绝对路径两种
        相对路径:
            .           表示当前文件所在的目录
            ..          表示当前文件所在的上一级目录
            文件名      表示当前文件所在目录的文件,相当于 ./文件名            ./ 可以省略

        绝对路径:
            正确格式是:  http://ip:port/工程名/资源路径

            错误格式是:  盘符:/目录/文件名
-->
<img src="1.jpg" width="200" height="260" border="1" alt="图片找不到"/>
<img src="../../2.jpg" width="200" height="260" />
<img src="../imgs/3.jpg" width="200" height="260" />
<img src="../imgs/4.jpg" width="200" height="260" />
  • 表格标签
<!--table 标签是表格标签
	border 设置表格标签
	width 设置表格宽度
	height 设置表格高度
	align 设置表格相对于页面的对齐方式
	cellspacing 设置单元格间距

	tr	 是行标签
	th	是表头标签
	td  是单元格标签
		align 设置单元格文本对齐方式

	b 是加粗标签
	
	colspan 属性设置跨列
	rowspan 属性设置跨行
	-->

<table width="500" height="500" cellspacing="0" border="1">
	<tr>
		<td colspan="2">1.1</td>
		<td>1.3</td>
		<td>1.4</td>
		<td>1.5</td>
	</tr>
	<tr>
		<td rowspan="2">2.1</td>
		<td>2.2</td>
		<td>2.3</td>
		<td>2.4</td>
		<td>2.5</td>
	</tr>
	<tr>
		<td>3.2</td>
		<td>3.3</td>
		<td>3.4</td>
		<td>3.5</td>
	</tr>
	<tr>
		<td>4.1</td>
		<td>4.2</td>
		<td>4.3</td>
		<td colspan="2" rowspan="2">4.4</td>
	</tr>
	<tr>
		<td>5.1</td>
		<td>5.2</td>
		<td>5.3</td>
	</tr>
</table>
  • iframe标签
我是一个单独的完整的页面<br/><br/>
<!--iframe标签可以在页面上开辟一个小区域显示一个单独的页面
    iframe和a标签组合使用的步骤:
       1 在iframe标签中使用name属性定义一个名称
       2 在a标签的target属性上设置iframe的name的属性值
-->
<iframe src="3.标题标签.html" width="500" height="400" name="abc"></iframe>
<br/>

<ul>
    <li><a href="0-标签语法.html" target="abc">0-标签语法.html</a></li>
    <li><a href="1.font标签.html" target="abc">1.font标签.html</a></li>
    <li><a href="2.特殊字符.html" target="abc">2.特殊字符.html</a></li>
</ul>
  • 列表标签
<!--ul 是无序列表
    type属性可以修改列表项前面的符号
    li  是列表项
    ol表示有序列表
-->
<ul type="none">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
<ol>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ol>
  • 其他标签
<!--
	div标签       默认独占一行
    span标签      它的长度是封装数据的长度
    p段落标签     默认会在段落的上方或下方各空出一行来(如果已有就不再空)
-->
<div>div标签1</div>
<div>div标签2</div>
<span>span标签1</span>
<span>span标签2</span>
<p>p段落标签1</p>
<p>p段落标签2</p>

效果:
在这里插入图片描述

  • 表单标签
<!--
    form标签就是表单
        input type=text     是文件输入框  value设置默认显示内容
        input type=password 是密码输入框  value设置默认显示内容
        input type=radio    是单选框    name属性可以对其进行分组   checked="checked"表示默认选中
        input type=checkbox 是复选框   checked="checked"表示默认选中
        input type=reset    是重置按钮      value属性修改按钮上的文本
        input type=submit   是提交按钮      value属性修改按钮上的文本
        input type=button   是按钮          value属性修改按钮上的文本
        input type=file     是文件上传域
        input type=hidden   是隐藏域    当我们要发送某些信息,而这些信息,不需要用户参与,就可以使用隐藏域(提交的时候同时发送给服务器)

        select 标签是下拉列表框
        option 标签是下拉列表框中的选项 selected="selected"设置默认选中

        textarea 表示多行文本输入框 (起始标签和结束标签中的内容是默认值)
            rows 属性设置可以显示几行的高度
            cols 属性设置每行可以显示几个字符宽度
		提交时:
			action属性设置提交的服务器地址
            method属性设置提交的方式GET(默认值)或POST

        表单提交的时候,数据没有发送给服务器的三种情况:
            1、表单项没有name属性值
            2、单选、复选(下拉列表中的option标签)都需要添加value属性,以便发送给服务器
            3、表单项不在提交的form标签中

        GET请求的特点是:
            1、浏览器地址栏中的地址是:action属性[+?+请求参数]
                请求参数的格式是:name=value&name=value
            2、不安全
            3、它有数据长度的限制

        POST请求的特点是:
            1、浏览器地址栏中只有action属性值
            2、相对于GET请求要安全
            3、理论上没有数据长度的限制
-->
<form action="http://localhost:8080" method="post">
    <input type="hidden" name="action" value="login" />
    <h1 align="center">用户注册</h1>
    <table align="center">
        <tr>
            <td> 用户名称:</td>
            <td>
                <input type="text" name="username" value="默认值"/>
            </td>
        </tr>
        <tr>
            <td> 用户密码:</td>
            <td><input type="password" name="password" value="abc"/></td>
        </tr>
         <tr>
            <td>性别:</td>
            <td>
                <input type="radio" name="sex" value="boy"/><input type="radio" name="sex" checked="checked" value="girl" /></td>
        </tr>
         <tr>
            <td> 兴趣爱好:</td>
            <td>
                <input name="hobby" type="checkbox" checked="checked" value="java"/>Java
                <input name="hobby" type="checkbox" value="js"/>JavaScript
                <input name="hobby" type="checkbox" value="cpp"/>C++
            </td>
        </tr>
         <tr>
            <td>国籍:</td>
            <td>
                <select name="country">
                    <option value="none">--请选择国籍--</option>
                    <option value="cn" selected="selected">中国</option>
                    <option value="usa">美国</option>
                    <option value="jp">小日本</option>
                </select>
            </td>
        </tr>
         <tr>
            <td>自我评价:</td>
            <td><textarea name="desc" rows="10" cols="20">我才是默认值</textarea></td>
        </tr>
         <tr>
            <td><input type="reset" /></td>
            <td align="center"><input type="submit"/></td>
        </tr>
    </table>
</form>
<!--代码来源:尚硅谷-->

:上面的代码都可以复制到body里面自己看效果,在这里就不演示了。
下一篇文章,我们来说一下Web和HTTP~

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

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

相关文章

探秘华为交换机:端口类型全解析

在下列情况下&#xff0c;判断的一般方法是什么&#xff1f; 1.交换机某个端口下的用户丢包。 2.交换机下的所有用户都在丢失数据包。 3、用户反映网速缓慢 检查网络电缆&#xff0c;重做水晶头&#xff0c;检查用户的计算机网卡&#xff0c;并重新启动交换机。 这几种做法都能…

Flink 学习五 Flink 时间语义

Flink 学习五 Flink 时间语义 1.时间语义 在流式计算中.时间是一个影响计算结果非常重要的因素! (窗口函数,定时器等) Flink 可以根据不同的时间概念处理数据。 处理时间: process time System.currentTimeMillis()是指执行相应操作的机器系统时间&#xff08;也称为纪元时间…

Docker安全

一、Docker 容器与虚拟机的区别 1、隔离与共享 • 虚拟机通过添加 Hypervisor 层&#xff0c;虚拟出网卡、内存、CPU 等虚拟硬件&#xff0c;再在其上建立虚拟机&#xff0c;每个虚拟机都有自己的系统内核 • Docker容器则是通过隔离的方式&#xff0c;将文件系统、进程、设…

Redis入门 - Lua脚本

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis入门 - Lua脚本 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-scription.html Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。 …

Spark01-Spark快速上手、运行模式、运行框架、核心概念

1 概述 Spark和Hadoop Hadoop HDFS(GFS:TheGoogleFileSystem)MapReduce总结&#xff1a;性能横向扩展变得容易&#xff0c;横向拓展:增加更多的计算节点来扩展系统的处理能力Hbase&#xff1a;分布式数据库 Spark Spark CoreSpark SQLSQL 方言&#xff08;HQL)Spark Streamin…

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型及程序资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87910311 模型简介&#xff1a; 建议使用MATLAB21b及以上版本打开&#xff01; 光伏阵列表面被局部遮挡时会产生热斑效应。为了防止太阳电池因热…

【Matter】Matter学习笔记1

文章目录 前言Matter协议架构1.Matter Over IPV62.Matter协议架构3.Matter标准协议架构 Matter网络拓扑结构Mesh组网1.单一网络拓扑2.星形网络拓扑 设备数据模型&#xff08;Date Model&#xff09;1.设备和端点&#xff08;Node、Endpoint&#xff09;2.节点角色&#xff08;N…

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(二)

文章目录 机器人逆运动学※ 代数解、几何解&#xff0c;解析解&#xff08;封闭解&#xff09;、数值解的含义与联系○ 代数解求 θ 1 \theta_1 θ1​、 θ 2 \theta_2 θ2​、 θ 3 \theta_3 θ3​※参考资料 求解 θ 1 \theta_1 θ1​ 求解 θ 3 \theta_3 θ3​ 求解 θ 2 \t…

Unity核心7——2D动画

一、序列帧动画 &#xff08;一&#xff09;什么是序列帧动画 ​ 我们最常见的序列帧动画就是我们看的日本动画片&#xff0c;以固定时间间隔按序列切换图片&#xff0c;就是序列帧动画的本质 ​ 当固定时间间隔足够短时&#xff0c;我们肉眼就会认为图片是连续动态的&#…

【Java基础学习打卡11】Path环境变量的配置

目录 前言一、为什么配置环境变量二、如何配置环境变量三、JDK11的环境变量配置总结 前言 本文我们要知道为什么配置环境变量&#xff0c;自己思考不配置环境变量可以吗&#xff1f;JDK 11 如何配置环境变量。 一、为什么配置环境变量 原因很简单&#xff0c;就是方便命令的查…

1.5 掌握Scala内建控制结构(一)

一、条件表达式 &#xff08;一&#xff09;语法格式 if (条件) 值1 else 值2 &#xff08;二&#xff09;执行情况 条件为真&#xff0c;结果是值1&#xff1b;条件为假&#xff0c;结果是值2。如果if和else的返回结果同为某种类型&#xff0c;那么条件表达式结果也是那种…

【STM32MP135 - ST官方源码移植】第二章:TF-A源码移植教程

STM32MP135 TF-A源码移植教程 一、创建build.sh编译脚本&#xff08;1&#xff09;解压tf-a的源码压缩包&#xff08;2&#xff09;打补丁&#xff0c;获取stm32mp135的源码&#xff08;3&#xff09;设计编译脚本build.sh1、进入tf-a源码&#xff1a;2、创建build.sh脚本文件3…

HTTP协议,带你了解HTTP协议

目录 1、HTTP 协议介绍 2、HTTP 协议的工作过程 HTTP 协议的工作过程可以分为以下几个步骤&#xff1a; 3、Fiddler 抓包工具介绍 3.1 抓包工具的使用 3.2 抓包结果 3.3 抓包工具原理 4、HTTP 协议格式总览 5、HTTP 请求&#xff08;Request&#xff09; 5.1 认识 URL…

C#中List<T>的排序相关的使用方法总结

C#中List<>的排序相关的使用方法 list的排序一般使用Sort和LINQ的Orderby方法&#xff0c;本文主要介绍其如何使用。 &#x1f32e;1.Sort和实现Comparable接口 此方式需要类去实现IComparable接口 public class OrderTest {[Test]public void OraderTest(){List<E…

MySQL优化--undo log和redo log的区别

首先我们需要知道两个概念 缓冲池&#xff08;buffer pool&#xff09;:主内存中的一个区域&#xff0c;里面可以缓存磁盘上经常操作的真实数据&#xff0c;在执行增删改查操作时&#xff0c;先操作缓冲池中的数据&#xff08;若缓冲池没有数据&#xff0c;则从磁盘加载并缓存…

(写自己语言的练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

写自己的开发语言时&#xff0c;很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具https://dbrwe.blog.csdn.net/article/details/107611540?spm1001.2014.3001.5502 <json> :: <object> | <array> <object> :: "{" [ <me…

操作系统 复习-计算题

一. 计算题&#xff08;共5题&#xff0c;100分&#xff09; 1.(计算题) 假设有4个进程需要在单CPU上运行&#xff0c;它们的执行时间如下表所示&#xff1a; 进程ID执行时间P18P25P32P44 现在我们需要按照抢占式优先级调度算法来安排这些进程的执行顺序。其中&#xff0c;进…

python代码加密方案

为何要对代码加密&#xff1f; python的解释特性是将py编译为独有的二进制编码pyc 文件&#xff0c;然后对pyc中的指令进行解释执行&#xff0c;但是pyc的反编译却非常简单&#xff0c;可直接反编译为源码&#xff0c;当需要将产品发布到外部环境的时候&#xff0c;源码的保护尤…

基于机器学习的内容推荐算法及其心理学、社会学影响闲谈

基于机器学习的内容推荐算法目前在各类内容类APP中使用的非常普遍。在购物、时尚、新闻咨询、学习等领域&#xff0c;根据用户的喜好&#xff0c;进行较为精准的用户画像与内容推荐。此类算法不但可以较为准确的分析用户的特征&#xff0c;如年龄、性别等&#xff0c;还能通过长…