![Python网络爬虫入门到实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/96/48894096/b_48894096.jpg)
1.3 HTML基础
HTML作为网页中最基础的内容,大多数爬虫书籍忽略了网页基本知识的讲解,这也有可能是相关作者默认读者已经掌握了这些知识。然而从笔者所接触的大部分读者来看,并没有系统学习网站的基本知识,就直接开始学习爬虫了,从而导致学习过程比较辛苦。
HTML、CSS、JS为网站搭建的三件套,下面开始学习HTML架构。
1.3.1 基本架构
正如开始创建一个HTML一样,这是一个最基本的HTML模板,如下所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/21_01.jpg?sign=1739352856-Yb2ay62oV921SiV0ZTgvBYQ7ob97cnUp-0-37c502f6d916d46885f74b4646097d1c)
我们来分析一下这个架构:
1)<!DOCTYPE html>:文档类型,这一行是必须写的声明。
2)<html></html>:<html>元素,其包含一个网页页面的所有元素。
3)<head></head>:<head>元素,相当于页面内容的一个容器。
4)<meta charset="UTF-8">:设置默认编码方式为UTF-8,否则容易乱码。
5)<title></title>:<title>元素,用于设置页面的标题。
6)<body></body>:<body>元素,这里包含网页的所有内容(如文本、图像、视频、音频)。
补充:注释快捷键为<Ctrl+/>。
1.3.2 标题和段落标签
1.标题标签
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/21_02.jpg?sign=1739352856-3pghFQG12rZYscpykydEKFG90h0RyzJa-0-b7aa5e8e237e898730b0942fd9a660a2)
注意:n的取值范围为1~6的整数。
作用:通常在网页中表示标题,数值越大,标题越小,例如下面的内容。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/21_03.jpg?sign=1739352856-1kC5wLXE2I07PLU3my4sil1lgp4g7Vey-0-9ba940e6f8d55290fc6e4cfc6fea2310)
将其添加在<body>与</body>标签之间,如图1-14所示。
单击浏览器按钮,运行结果如图1-15所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_01.jpg?sign=1739352856-XjDB86wfyVlNca8IkOQ6KWrHCl9rPuvx-0-fddb910212ee9a8453e3f8f0de0e610a)
•图1-14 代码界面
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_02.jpg?sign=1739352856-U4q77Xl1IFkHEtPshR5Z7YmYCYQdVCAs-0-d1c4cb34b12eb69ff64812fae510671c)
•图1-15 运行结果
2.文本段落标签
<p>元素用于包含文本段落。p标签一般也放到body之间,比如下面的小段落。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_03.jpg?sign=1739352856-kDihewI6F25eoqSWGtSQU9UHamLZ8rfQ-0-eae062e9a92d3f94c972f111c0af10f8)
完整的代码如图1-16所示(写完记得保存,否则网页不会更新,这是初学者常犯的错误)。
直接刷新网页,浏览界面如图1-17所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_04.jpg?sign=1739352856-ekplS0hlS5JE7Dlsa3f79IXNgPJ0xdQy-0-10d493efca2c769ff76d7186ac0200b6)
•图1-16 代码界面
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_05.jpg?sign=1739352856-peaz8sZrKLcVgQfIGxmKtekihf28d6nI-0-297ce371036a4b596d2c0ddb1f5d7544)
•图1-17 浏览界面
<p>标签还有一些别的方法,比如:
1)注明版权。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_06.jpg?sign=1739352856-tz2EGdjDgN6zeIQEz8wz3VXioMYUxqcr-0-4a55dda484f532f23cbaf47ebfe1f0b0)
2)使用空格符。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_07.jpg?sign=1739352856-AsZweP26r43MorhYbV3gXvnvCV8ozNMH-0-7d004890afd842d38720cd378b993b61)
3)使用引号符。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/22_08.jpg?sign=1739352856-PwA3zQ1seeXaLC2aZVt8ZVzfxACdqBr3-0-01226b20b6c0ec13bd0912866c31fbc3)
运行或者刷新之前的页面,运行结果如图1-18所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/23_01.jpg?sign=1739352856-pQ1YVBW2cUoQzWVJ7unc3dJbfodlAsvL-0-3ff3a652bef47038d6f293b97b482eba)
•图1-18 运行结果
1.3.3 文字标签
如果想要设置字体样式,就要用到<font></front>设置文字的样式(外观)。它的常用属性如下。
1)color:设置颜色,用英语单词表示,比如red、blue、green等。也可以传入rgb,具体可以查看rgb表,比如rgb(0,250,125)。也可以传入十六进制,比如#ff0000(红色),#000000(黑色)等。
2)size:设置字体大小,取值范围为1~7,如果超出了最大值,使用默认最大值。
以下是对上述方法的实践。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/23_02.jpg?sign=1739352856-bYZFPgsoj9x7AbAuS5VPIdxc6sWhAstN-0-849db47644de0848e7c6ee2b241bbcfb)
代码界面如图1-19所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/23_03.jpg?sign=1739352856-F0jRp1aN6ORz044LkWLzScPDjfgQ03eW-0-7d643dc2afa87beac74e1daa8655ea12)
•图1-19 代码界面
保存后刷新页面,即可看到运行结果,如图1-20所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/24_01.jpg?sign=1739352856-8eGBIezuanHSbWxKuQhd5ehmupQDyxNn-0-b1de97acbb35a6c9a4c70dc869bad585)
•图1-20 运行结果
1.3.4 图像标签
图像标签:<img/>,它有以下几个主要参数:
1)src设置图片的路径。
2)width设置图片的宽度。
3)height设置图片的高度。
4)alt设置图片的替换文本,如果图片资源加载不出来,可显示文本。
5)title设置鼠标悬浮标题。
默认情况下,使用图片默认宽高,比如<img src="1.png"/>。
使用width和height,设置宽和高:<img src="1.png"width="300px"height="300px"/>。
如果图片加载不出来,替换文本:<img src="1.png"alt="努力奋斗"//>。
鼠标悬浮标题:<img src="1.png"title="奋斗"width='200px'height='200px'/>。
保存刷新(或者运行)浏览器,运行结果如图1-21所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/24_02.jpg?sign=1739352856-H2kvDCx4k2r8DHu4zbWjyuRjDW1jyHN8-0-5c5ccc4e26e7a0bd836260b78b08cd06)
•图1-21 运行结果
注意:路径一定要读取到图片,与Python中的绝对路径和相对路径是相同的,下面两点是需要读者注意的。
1)如果图片和HTML文件在同级目录,可以直接读取,如<img src="pic.jpg"/>。
2)如果图片文件夹img和HTML文件在同级目录,则书写格式为:<img src="img/pic3.jpg"/>。
1.3.5 超链接标签
如果想通过单击跳转到另一个网址,可以设置链接标签,这里只需要使用<a/>标签即可。它的属性有href参数,在href中传入的是链接。比如文字超链接:<a href="https://cn.bing.com/">我爱学习</a>,标签依然在body之间。还可以用href做弹出框,比如<a href="javascript:void(0)"onclick="alert('你敢点我吗?')">弹出框</a>。
完整代码如图1-22所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/25_01.jpg?sign=1739352856-9htcEFt9uI9rneYHYRQQxnbYw2b8XhLv-0-449fa0930d7291b710ec53ed5394bcd8)
•图1-22 完整代码
超链接标签运行结果如图1-23所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/25_02.jpg?sign=1739352856-2vnblgnmPVzRSnrDBOjwzYUDEiWntw3O-0-4a10378e191bdcc8690eb3b0f296e434)
•图1-23 超链接标签运行结果
1.3.6 块标签
一般有以下这几种分块标签,它们主要用于内容排版:
1)<p></p>:内容会自动换行,一般作为段落。
2)<div></div>:内容会自动换行,一般作为网页不同区域划分。
3)<span></span>:内容不会换行,同一行显示,比如“登录”和“注册”按钮。
来看一下这个例子,文件名为4.html。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/25_03.jpg?sign=1739352856-rsleIVWqoEgHqT8TLelZJ1qFPwEg0BZo-0-40737f0afbb6939823869593d63d1b91)
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/26_01.jpg?sign=1739352856-AhLIE1YJ3594iiSm2RkfatqE9f5PfUA4-0-fabb363160032d999261812c4d28f8b1)
运行结果如图1-24所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/26_02.jpg?sign=1739352856-9eCeQ71XWXjlGHSntfaXP5GaszDMDjr4-0-6bb34c3a4995849728adc1f5a76509f0)
•图1-24 运行结果
1.3.7 列表标签
列表标签相信读者是很熟悉的,比如随便打开一个图片网站,单击鼠标右键,选择菜单栏中的“检查网页”命令,如图1-25所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/26_03.jpg?sign=1739352856-lYzBAEaP9OM84ib2M2BKn5dWlBrJ6iV5-0-a111e776b440f727c6ccf799fe6c55bc)
•图1-25 列表标签
每张图片都在一个<div></div>标签中,所有div标签又是同级的,它们有一个共同的父标签,这样的标签叫作列表标签。列表标签常用的标签有以下两种:
1)有序列表:<ol></ol>表示有序标签的父标签。
2)无序列表:<ul></ul>表示无序列表的父标签。
现在来创建一个文件名为6.html的文件。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/27_01.jpg?sign=1739352856-xNprzUhm1egEAPq8QvAr0TFFmv9d2HbS-0-73273bafc76649490dd58b3173d992f6)
如上使用的是无序列表,ul中type参数的属性值为:square(表示方框)、circle(表示空心圆)、disc(表示实心圆)。无序列表运行结果如图1-26所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/27_02.jpg?sign=1739352856-Fh5tUjPJOTp8xHgeZ5BdXoJQ77g7oPCN-0-cc16e1089cbc85b34d36cdb7a88412d9)
•图1-26 无序列表运行结果
下面创建一个名为7.html的文件,案例代码如下。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/27_03.jpg?sign=1739352856-pYqIJcuhTdJ8r6HnKw9MhNEi57sAuMUH-0-9b96ebfe47251c62645b1d9db0711a03)
有序列表运行结果如图1-27所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/27_04.jpg?sign=1739352856-BW57KRmd9hrrVn9MYxFEJXShHU4zMOnI-0-ec5360e9fcc8c5e36836405be95ffa81)
•图1-27 有序列表运行结果
1.3.8 音频视频标签
音频使用标签<audio></audio>,视频使用标签<video></video>,它们的属性如下:
1)src需要加载资源的路径。
2)autoplay自动播放。
3)controls显示进度控制条。
4)loop循环播放。
首先下载一个音频和视频,并放在与HTML文件同级的目录下,下面创建一个名为5.html的文件,案例代码如下。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/28_01.jpg?sign=1739352856-TMTLoDPWJNjqrvlr1S14zXpaYbRog0Xk-0-9d8cc9747b9ae80d9737df764cf54649)
运行结果如图1-28所示,单击播放按钮即可播放(IE浏览器支持自动播放,其他浏览器需要手动点击播放)。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/28_02.jpg?sign=1739352856-zVe9OpS3VH3gFireEgjppYwyjZxpnTXo-0-b2173f50e2e5f0b2fdc80e25f6ed84e0)
•图1-28 音频和视频标签
1.3.9 表格标签
表格标签为<table></table>,它的内部基本属性有如下几个。
1)<tr></tr>子标签:表示表格里面的行。
2)<td></td>子标签:表示表格里面的列。
3)<caption></caption>:设置表格的标题。
4)Border:设置表格的边框。
5)borderColor:设置边框的颜色。
6)cellspaing:设置单元格的间隔。
7)width:设置表格的宽度。
8)height:设置表格的高度。
9)lign:设置文本内容的对齐方式(left:左对齐;right:右对齐;center:居中对齐)。
案例:制作一个学生信息表格,要求包含姓名、性别、学号(文件名:8.html),案例代码如下。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/29_01.jpg?sign=1739352856-nSmzy8s5PGkDsH6WqDr8Pfjipsbls0T6-0-92226f835e84ae21796f9b916ff12dc6)
运行结果如图1-29所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/30_01.jpg?sign=1739352856-tK0m4nZWvj6lWDe5hWQnsuLLkhixGBsY-0-a4cf034df8284f6957a6d5a65643e2ef)
•图1-29 学生信息表格
1.3.10 表单标签
表单标签的作用是提交不同的数据到后台服务器。在实际生活中,常常会遇到填写问卷调查、账号注册等,需要录入个人信息,这些都是表单。下面来学习如何制作简单的表单标签。表单标签一般使用:<from></from>,表单提交属性一般有以下两种。
1)action:提交到服务器的地址。
2)method:提交采用的方式 如get或post。post相对比较安全。
<input/>一般叫作输入标签,它的内部可以传入type参数。type表示输入内容的类型,一般有以下的选项:
1)普通输入项:type="text"。
2)密码输入项:type="password"。
3)单项输入项:type="radio"。
4)多项输入项:type="checkbox"。
5)文件输入项:type="file"。
6)邮箱输入项:type="email"。
7)重置按钮:type="reset"。
8)提交按钮:type="submit"。
9)普通按钮:type="button"。
下拉框一般使用<select></select>标签,比如选择城市、年份等信息。子标签为<option></option>,它可以传的值有name:名称、value、selected="selected"。名称(name)和值(value)是自定义的。为了更好地理解表单标签,可以通过实战来学习一下,比如制作个人信息表单,如图1-30所示,收集姓名、性别、爱好、邮箱、照片等信息,需要填写个人登录密码,确保填写为本人。
分析:可以将表单需要填写的内容放在一个表格中。只需要在中间填写需要的信息即可。例如下面的几个例子:
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/31_01.jpg?sign=1739352856-BI7c2maiZltkuyPzSFhp0obe3DFZKjUI-0-0a16ef0506ed72a769b521704d489511)
•图1-30 个人信息表单
1)填写密码。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/31_02.jpg?sign=1739352856-oNfZPuoL6D9CGGaWVSgUYPLHj4bhHtAR-0-838c72da5afba4dfc1b4fb213e05b74f)
2)填写邮箱。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/31_03.jpg?sign=1739352856-pavhhXftkzhMZdqjAKFu9MMhYttrC32E-0-169297be7d44b2c7d6e18981640c0736)
3)图片上传(图片也是文件)。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/31_04.jpg?sign=1739352856-rB5mzJVtU4sVu7XkEGxH2ypv4g2ACgxy-0-dd3a2c65597cde2193b6622f2714b895)
上述例子几乎只修改一下type的形式即可,完整文件以及其他类型的代码见随书资源中的9.html文件,读者可以自行下载获取。
1.3.11 框架标签
我们也可以使用框架标签<frameset></frameset>,将多个HTML合并到一起,它的属性如下:
1)rows:按照行进行划分,根据填写的百分比进行划分。
2)cols:按照列进行划分,根据填写的百分比进行划分。
它的子标签为<frame/>,用于显示具体的页面。案例:将前面案例中部分的HTML合并到一起。如果按照行划分,则案例代码如下所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/32_01.jpg?sign=1739352856-qLNdMU288s6CE8JLxPTURTDs82VN5J4q-0-3da12c59eba76ec5c6d26041f18e3d3e)
按行划分的运行结果如图1-31所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/32_02.jpg?sign=1739352856-ri2kzrmZTZbgG51WBGXIXxVCaFPADjA6-0-ae60d63a60a757782e09e09edc7923ab)
•图1-31 按行划分的运行结果
如果按照列划分,案例代码如下所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/32_03.jpg?sign=1739352856-N2Bd0QEMNmXFxB6xyL6mwhMA1v5ZGIj4-0-8472513dc497412e38624bab85ef8ef4)
按列划分的运行结果如图1-32所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/33_01.jpg?sign=1739352856-2yzjAEjGRKY8Ql7vpm5qg9YR6W6YHE60-0-121e8a633aec550ce335fa1edb06f7d6)
•图1-32 按列划分的运行结果
同样也可以混合起来使用,案例代码如下所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/33_02.jpg?sign=1739352856-CHViyHAo41wiVIZtaCgtXMaiKTEBa237-0-0ce76c1b1c845e74681f9b38b0b94289)
混合使用的运行结果如图1-33所示。
![](https://epubservercos.yuewen.com/21A8BA/28606725804710806/epubprivate/OEBPS/Images/33_03.jpg?sign=1739352856-iVwEhLx6QcnRpAvw9HVr9eo0vlTnWlgi-0-31fb72ecdf1c38fc83bca68ee28d0292)
•图1-33 混合使用的运行结果