Python爬虫学习笔记(一)————网页基础

2023-11-08

目录

1.网页的组成

2.HTML

(1)标签

(2)比较重要且常用的标签:

①列表标签

②超链接标签 (a标签)

③img标签:用于渲染,图片资源的标签

④div标签和span标签

(3)属性

(4)常用的语义化标签

(5)元素的分类及特点

①块元素

②行内元素

③行内块元素

(6)文件路径

(7)HTML的基本结构

(8)节点树及节点间的关系

3.CSS

(1)引入css的方法

(2)选择器

(3)单位

(4)css三大特性


1.网页的组成

网页可分为三个部分——HTML、CSS和JavaScript。如果把网页比作一个人的话,HTML相当于骨架,JavaScript相当于肌肉,CSS相当于皮肤,三者结合起来才能形成一个完善的网页。

2.HTML

HTML是用来描述网页的一种语言,全称为超文本标记语言。网页包含文字、按钮、图片和视频等各种复杂的元素,其基础架构就是HTML。不同类型的文字通过不同类型的标签来表示 ,如图片用img标签表示,视频用video标签表示,段落用p 标签表示 ,他们之间的布局又常通过布局标签 div 嵌套组合而戚成,各种标签通过不同的排列和嵌套才形成了网页的框架。

我们可以随意打开一个网站,比如京东首页,然后单击鼠标右键选择“检查元素”菜单或者按 F12,即可打开浏览器开发者工具,接着切换到 Elements 面板,这时候呈现的就是京东网首页对应的 HTML,它包含了一系列标签,浏览器解析这些标签后,便会在网页中将它们渲染成一个个节点,这便形成了我们平常看到的网页。

(1)标签

是由w3c提前制定好的一些针对于html文档的标记符号,这些符号是具备各自的含义的。具体在html中的变现形式 由 < > 括起来的对象 比如: html  head  body

需要注意的是:

        ①标签通常是成对出现的,但也有极少部分只有开始标签,没有结束标签  称作 单标签或者空标签 比如:meta

        ②标签是允许嵌套的,但是要符合嵌套的标准

通常,我们也会将标签称作为元素 ,例如:根元素  、head元素等

(2)比较重要且常用的标签:

①列表标签

 1>有序列表,表示如下:

<ol>
    <li></li>
    <li></li>
    <li></li>
</ol>        

2>无序列表,表示如下:

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>         

3>定义列表,表示如下:

<dl>
    <dt></dt>
    <dd></dd>
    <dt></dt>
    <dd></dd>
</dl>

注:列表之间是可以相互嵌套的

②超链接标签 (a标签)

                1>可以访问到外部网络的资源

                 2>可以访问本地网页资源

                3>可以作为锚点,在当前页面指定位置进行定位跳转

③img标签:用于渲染,图片资源的标签
④div标签和span标签

小tip:href和src的区别: 

href和src都是指向外部资源地址或者本地资源地址

不同点:

href属性:

        1>通过该属性去关联另一份外部资源文件

        2>如果被关联的资源文件,在页面渲染时需要用到该资源中的内容时,它会下载该资源,

        3>如果需要下载资源文件内容时,并行下载的方式,不会阻塞页面的渲染

src属性:

        1>通过该属性去访问到对应的外部资源,并替换掉该标签的内容

        2>src属性肯定是会下载对应路径的资源的

        3>src的下载不是并行下载,在页面渲染时如果遇到src那么会将该资源全部下载完毕并且解析后,才会继续渲染页面后续的内容(src会阻塞页面的渲染)

(3)属性

通常格式:key=value(注:有时候只有key没有value,即表示逻辑值的时候)

①全局属性:全部元素都具备(例id,class,style等等)

②局部属性:只能某些元素使用

(4)常用的语义化标签

标题标签(h1-h6标签)、段落标签(p标签)、i/em标签(斜体)、b/strong标签(粗体)、blockquote/q标签(引用)等等。

(5)元素的分类及特点

①块元素

        1>块元素具有布局特点,一般常用页面的整体布局

        2>块元素独占(其父元素)页面的一行

        3>块元素可以嵌套任何类型的元素(除p元素以外,p元素中不能嵌套任何的块元素)

        4>块元素可以设置宽,高  默认的宽度是其父元素的宽度

        5>块元素默认高度是由内容决定的

②行内元素

        1>正常情况下,行内元素是不会换行的

        2>行内元素会在一行排不下时进行换行

        3>行内元素不能设置宽 高  行内元素的宽和高都是由其内容决定的

        4>行内元素一般不会嵌套块级元素,大多数是嵌套文本或者其他的行内元素

③行内块元素

        1.行内块元素不会独占一行,在一行排列

        2.可以设置宽高(默认是内容的宽 高)

注:元素之间可以相互进行转换,使用diaplay:block(inline/inline-block);

(6)文件路径

①相对路径:与当前的文件是没有联系的,不是根据当前该文件所处的位置去访问对应的资源。

②绝对路径:从当前文件出发去寻找其他的资源,当前的位置为中心。

(7)HTML的基本结构

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
    <title>This is a Demo</title>
</head> 
<body>
    <div id="container">
        <div class="wrapper">
            <h2 class="titie">Hello Morld</h2>
        	<p class="text">Hello, this is a parpgtaph.</p>
        </div>
    </div>
</body>    
</html>

(8)节点树及节点间的关系

​ 在HTML中,所有标签定义的内容都是节点,这些节点构成一个 HTML节点树,也叫HTMLDOM树。

​ 先来看一下什么是 DOM。DOM 是 W3C(万维网联盟)的标准,英文全称是 Document Object Model,即文档对象模型。它定义了访问 HTML 和 XML 文档的标准。根据 W3C 的HTMLDOM 标准,HTML 文档中的所有内容都是节点。

  • 整个网站文档是一个文档节点。
  • 每个 html 标签对应一个根节点,即上例中的 html 标签,它属于一个根节点。
  • 节点内的文本是文本节点,比如 a 节点代表一个超链接,它内部的文本也被认为是一个文本节点。
  • 每个节点的属性是属性节点,比如 a 节点有一个 href 属性,它就是一个属性节点。
  • 注释是注释节点,在 HTML 中有特殊的语法会被解析为注释,它也会对应一个节点。

因此,HTML DOM 将 HTML 文档视作树结构,这种结构被称为节点树,如下图所示。可通过这棵树访问所有节点。可以修改或删除它们的内容,也可以创建新的元素。这颗节点树展示了节点的集合,以及它们之间的联系。这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条:

DOM node tree

节点树中的节点彼此之间都有层级关系。常用父节点、子节点和同级节点描述这种关系。父节点拥有子节点,位于相同层级上的子节点称为同级节点(兄弟或姐妹)。

  • 在节点树中,顶端的节点称为根节点
  • 根节点之外的每个节点都有一个父节点
  • 节点可以有任何数量的子节点
  • 叶子是没有子节点的节点
  • 同级节点是拥有相同父节点的节点

下面的图片展示出节点树的一个部分,以及节点间的关系:

3.CSS

(1)引入css的方法

①行内样式:直接在标签内通过style=""设置。

②内联样式:在head标签里写style标签,在其编写样式即可。

③外联样式:通过link标签引入外部的css文件。

(2)选择器

①基础选择器:元素选择器、id选择器、类选择器、通配符选择器

②复合选择器:交集选择器、并集选择器

③关系选择器:子代选择器、后代选择器、兄弟选择器

④属性选择器:例:[tytle="name"]

⑤伪类选择器:
        1>结构伪类(  :first-of-type  |  :last-of-type  |  :nth-of-type()  )

        2>动态伪类(  link  |  hover  |  active  |  visited  )

⑥伪元素选择器(  ::first-letter  |  ::first-line  |  ::selection  |  ::before  |  ::after  )

(3)单位

①长度单位:px、em、rem、vh和vw

②比例单位:%

③颜色单位:颜色单词、RGB格式、RGBA格式、#十六进制

(4)css三大特性

①层叠性:当有多个相同选择器或者同类型的选择器选中同一个元素,并为其设置同一个样式属性的不同属性值,会优先使用靠近元素的选择器所设置的样式。

注意:当选择器权重(优先级)不同时,无法通过层叠性解决样式冲突

②优先级(权重)

通配符选择器<元素选择器<类/伪类选择器<id选择器<行内样式<!important(无限大)

③继承性:子元素(后代元素)继承父元素(祖先元素)已经定义过的属性(即字体相关 、字体颜色、 列表相关的、文本相关的等)。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫学习笔记(一)————网页基础 的相关文章

  • Pandas:参差不齐的时间序列的时间加权滚动平均值

    我有一个参差不齐 意思是不规则的频率 时间索引的 DataFrame 我想对其执行时间加权滚动平均值 以维护 DataFrame 的原始索引 假设记录的值在被另一个值取代之前一直有效 实现此目的的一种方法是将参差不齐的 DataFrame
  • 如何在 Heroku 中安装 NLTK 模块

    嘿 我想在我的 Heroku 服务器上安装 NLTK pos tag 我该怎么办呢 请给我一些步骤 因为我是 Heroku 服务器系统的新手 我刚刚添加了官方nltk支持构建包 只需添加一个nltk txt文件包含要安装的语料库列表 一切都
  • 如何使用 eval dataframe 方法在自定义函数中返回 numpy 数组或列表?

    我正在使用 python 3 X 我正在尝试使用eval https pandas pydata org pandas docs stable generated pandas eval html pandas eval数据框方法 包括这样
  • 在类中设置默认值

    我正在用 Python 创建一个类 但我不确定如何正确设置默认值 我的目标是为所有类实例设置默认值 也可以通过类方法对其进行修改 但是 我希望在调用方法后恢复初始默认值 我已经能够使用下面所示的代码使其工作 它不是很 漂亮 所以我怀疑这是解
  • 倒计时:01:05

    如何在 Python 中创建一个看起来像 00 00 分钟和秒 的倒计时时钟 它独立成一行 每次减少一actual秒 则应将旧计时器替换为低一秒的新计时器 01 00变成00 59它实际上击中了00 00 这是我开始使用但想要改造的基本计时
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • ElementNotVisibleException:消息:元素在 Robot Framework 中不可交互

    示例代码 div class modal footer div
  • Python Ctypes:将返回的 C 数组转换为 python 列表,无需 numpy

    我正在使用 Python Ctypes 来访问一些 C 库 我连接到的函数之一返回const double 它实际上是一个双精度数组 当我在Python中得到结果时 如何将该数组转换为Python列表 C函数的签名 const double
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • MAMP Python-MySQLdb 问题:调用 Python 文件后 libssl.1.0.0.dylib 的路径发生变化

    我正在尝试使用 python MySQLdb 访问 MAMP 服务器上的 MySQL 数据库 当我最初尝试使用 python sql 调用 Python 文件来访问 MAMP 上的数据库时 我得到了image not found关于错误li
  • 在 NLTK Python 的朴素贝叶斯分类器中使用文档长度

    我正在使用 Python 中的 NLTK 构建垃圾邮件过滤器 现在 我检查单词的出现情况并使用 NaiveBayesClassifier 其准确度为 0 98 垃圾邮件的 F 测量值为 0 92 非垃圾邮件的 F 测量值为 0 98 然而
  • 在循环中动态添加方法时的范围问题

    我有一个 API 用于分析我的锻炼数据 我抓取的数据 跑卫 http runkeeper com 的网站 我的主类是一个子类pandas DataFrame 它基本上是表格数据的容器 它支持按列名索引 返回列值的数组 我想根据数据中存在的
  • Django 模型表单中的必填字段

    我有一个表格 当我也不想要它们时 会根据需要显示几个字段 这是来自 models py 的表格 class CircuitForm ModelForm class Meta model Circuit exclude lastPaged d
  • 虎鲸失踪

    使用plotly 导出静态图表时遇到小问题 Plotly 无法正确识别我已安装 orca 并且仍然存在与缺少 orca 相关的错误 我尝试更改 orca 目录 但它仍然无法正常工作 谁知道出了什么问题吗 My code import plo
  • 熊猫:SettingWithCopyWarning:[重复]

    这个问题在这里已经有答案了 我尝试使用以下代码将列转换为 日期 df DATE pd to datetime df DATE or df DATE pd to datetime df DATE 但我收到以下错误 Users xyz anac
  • Python代码检测OS X El Capitan中的暗模式以更改状态栏菜单图标

    我有目标 C 代码来检测暗模式以更改状态栏 NSDistributedNotificationCenter defaultCenter addObserver self selector selector darkModeChanged n
  • python散景中的反转轴

    我正在尝试反转 y 轴并在散景散点图中设置 x 和 y 的范围 我在用 BokehPlot bokeh scatter data df x range min utc max utc y range min val max val 我收到错
  • 在 jupyter 笔记本中运行 pytest 测试函数

    我正在制作有关 python 测试选项的演示 我想要演示的技术之一是 pytest 我计划使用 jupyter ipython 笔记本进行演示 理想情况下 我希望能够在单元格中定义一个测试函数 然后使用 pytest 运行该函数 这样我就可
  • 使用和不使用 SciPy 计算 k 组合的数量

    我对这个函数感到困惑combSciPy 的 http docs scipy org doc scipy 0 14 0 reference generated scipy misc comb html看起来比简单的 Python 实现要慢 这

随机推荐

  • 习题2软件工程

    3 4 1 不是 通常所说的结构化程序 是按照狭义的结构程序的定义衡量 符合定义规定的程序 图示的程序的循环控劇结构有两个出口 显然不符合狭义的结构程序的定义 因此是非结构化的程序 2
  • aspose文档格式转换

    文章目录 Word转Pdf html转pdf pdf转word Word转Pdf public static void main String args throws Exception Document doc new Document
  • pikachu靶场CSRF之TOKEN绕过

    简介 Pikachu靶场中的CSRF漏洞环节里面有一关CSRF TOKEN 这个关卡和其余关卡稍微有点不一样 因为表单里面存在一个刷新就会变化的token 那么这个token是否能绕过呢 接下来我们来仔细分析分析 实战过程 简单尝试 先利用
  • 11月10日 生命值,减少生命值,创建生命值UI UE4斯坦福 学习笔记

    制作角色属性Comp 添加一个Actorcomp 在 h内添加生命值与减少血量的函数 protected 只在蓝图内可以编辑 在编辑器界面不能编辑 UPROPERTY EditDefaultsOnly BlueprintReadOnly C
  • Qt应用开发(基础篇)——颜色选择器 QColorDialog

    一 前言 QColorDialog类继承于QDialog 是一个设计用来选择颜色的对话框部件 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色 比如画图工具中选择画笔的颜色 刷子的颜色等 你可以使用静态函
  • 彻底卸载MySQL8.0

    环境需求 win10 MySQL8 0 彻底卸载 1 停止MySQL服务 启动任务管理器 gt 选择服务 gt 找到MySQL gt 右键停止 如果有多个MySQL服务 也全部都要停掉 2 卸载MySQL相关所有组件 打开看控制面板 gt
  • 使用树莓派进行远程视频转播(内网穿透)

    一 准备材料 实体 树莓派摄像头 树莓派 虚拟 云服务器 二 先测试树莓派进行局域网转播 这里是需要安装的软件 sudo apt get install subversion libjpeg8 dev imagemagick libv4l
  • 线性代数系列讲解第七篇 正交向量及正交空间

    正交向量 orthogonal vector 毕达哥拉斯定理 勾股定理 Pythagoras 我们很容易得出 x 2 y 2 x y 2 x 2 y 2 x y 2 x 2 y 2 x y 2 这就是勾股定理 我们可以将一个向量的模的平方写
  • 服务器改配项目,网络服务器搭建(项目五)[xxxx1214修改].ppt

    网络服务器搭建 项目五 xxxx1214修改 4 查看启动信息 service named restart 如果named服务无法正常启动 可以查看提示信息 根据提示信息更改配置文件 5 查看端口 如果服务正常工作 则会开启TCP和UDP的
  • 自动化测试:python测试结果和报告自动发送邮件

    一 带有附件发送邮件 1 导入模块 MIMEMultipart from email mime multipart import MIMEMultipart 复制 2 先读取要发送文件的内容 file new 是测试报告路径的参数名 3 下
  • Linux 动态库 soname 实践

    xredis 因为项目中使用到了 xredis C 开发的redis客户端 是对hiredis的C 封装 在 makefile 中发现使用到了 Wl soname 这个语法 之前没怎么了解过 特此记录 makefile 节选如下 XREDI
  • LeetCode—200.岛屿数量(Number of Islands)——分析及代码(C++)

    LeetCode 200 岛屿数量 Number of Islands 分析及代码 C 一 题目 二 分析及代码 1 深度优先搜索 1 思路 2 代码 3 结果 三 其他 一 题目 给定一个由 1 陆地 和 0 水 组成的的二维网格 计算岛
  • elementui确认消息区分取消和关闭按钮

    默认情况下 elementui的确认消息 取消按钮和右上角弹窗 走的是同一个方法 也就是catch方法的回调 如果功能上需要做区分 就没法区分了 所以 要解决这个问题 就需要在取消的回调方法里做一个判断 来区分是点击右上角的取消 还是点击的
  • 如何隐藏unity窗口中的变量、如何设置变量范围、在编辑器中如何显示私有变量与Awake、start之间的区别

    什么是脚本 cs的文本文件 类文件 附加到游戏物体中 定义游戏对象行为指令的代码 c 类包括 字段 属性 构造方法 方法 脚本文件包括 字段 方法 不能在脚本文件里写构造方法 一些unity脚本小属性 序列化字段 作用 在编辑器中显示私有变
  • 基于Matlab的BiLSTM实现

    问题背景 目前深度学习多使用python实现 不过想要配置好一个python的深度学习环境有时却并不轻松 常常因为各个第三方库版本兼容性问题而失败 相比之下 matlab仅需一次安装简化了不少工作 这几年matlab的深度学习工具箱也是发展
  • 高斯过程回归

    文章目录 效果一览 文章概述 研究内容 程序设计 参考资料 效果一览 文章概述 高斯过程回归 Matlab实现高斯过程回归多输入单输出预测 Gaussian Process Regression 研究内容 高斯过程回归 Gaussian P
  • OpenFeign 入门教程 - 基础篇

    目录 Spring Cloud OpenFeign 介绍 Feign 概述 Spring Cloud OpenFeign 概述 Spring Cloud OpenFeign 的特性 Feign 与 Spring Cloud OpenFeig
  • Centos7 linux 安装 redis 遇到的几个问题

    环境 centos7 redis 5 0 解决方案仅供参考 如不能解决问题 请查找请他方案 1 不能编译没有GCC 编译工具 make报错 make 1 persist settings Error 2 ignored CC adlist
  • DataX全量和增量mysqltomysql(二)

    全量mysqltomysql 进入目录编写json cd usr local datax job vi zabbixmysql2mysql json 写入的表结构要和reader的表结构一样 先建立好 编写json文件 job conten
  • Python爬虫学习笔记(一)————网页基础

    目录 1 网页的组成 2 HTML 1 标签 2 比较重要且常用的标签 列表标签 超链接标签 a标签 img标签 用于渲染 图片资源的标签 div标签和span标签 3 属性 4 常用的语义化标签 5 元素的分类及特点 块元素 行内元素 行