数据解析
- 前言
- 一、常见数据类型
- 1.结构化数据
- 2.半结构化数据
- 3.非结构化数据
- 二、HTML概述
- 1.HTML骨架格式
- 2.HTML标签关系
- 三、CSS选择器
- 1.标签选择器
- 2.类选择器
- 3.ID选择器
- 4.组合选择器
- 5.后代选择器
- 6.伪类选择器
- 7.属性提取器
- 8.小结
- 四、xpath节点提取
- 1.什么是xpath
- 2.认识xml
- 1.html和xml的区别
- 2.xml的树结构
- 3.xpath的节点关系
- 4.xpath语法
- 5.小结
前言
对于爬虫中的数据解析,简单理解就是在通用爬虫获取到的响应数据中,进一步提取出我们需要的某些特定数据,是指对网页中指定的内容进行提取的过程。
一、常见数据类型
1.结构化数据
结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。
2.半结构化数据
非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文档、JSON文档等。
https://www.bejson.com/jsoneditoronline/这个也是json文件。
3.非结构化数据
顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。
总结:能看懂的就是结构化的数据,看不懂的,就是非结构化数据
二、HTML概述
- HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言。
- H(很)T(甜)M(蜜)L(啦)
- HTML 不是一种编程语言,而是一种标记语言 (markup language)
- 标记语言是一套标记标签(markup tag)
所谓超文本,有2层含义:
- 因为它可以加入图片、声音、动画、多媒体等内容(超越文本限制 )
- 不仅如此,它还可以从一个文件跳转到另一个文件,与世界各地主机的文件连接(超级链接文本)。
<h1> 我是一个大标题 </h1>
一句话说出他们:
网页是由网页元素组成的 , 这些元素是利用html标签描述出来,然后通过浏览器解析,就可以显示给用户了。
门外汉眼中的效果页面
爬虫工程是中的页面
1.HTML骨架格式
日常生活的书信,我们要遵循共同的约定。
同理:HTML 有自己的语言语法骨架格式:(要遵循,要专业) 要求务必非常流畅的默写下来。
<html><head><title></title></head><body></body>
</html>
html骨架标签总结
2.HTML标签关系
主要针对于双标签 的相互关系分为两种: 请大家务必熟悉记住这种标签关系,因为后面我们标签嵌套特别多,很容易弄混他们的关系。
- 嵌套关系
<head><title> </title>
</head>
2.并列关系
<head></head>
<body></body>
倡议:
如果两个标签之间的关系是嵌套关系,子元素最好缩进一个tab键的身位(一个tab是4个空格)。如果是并列关系,最好上下对齐。
一句话说出他们:
html双标签可以分为: 一种是 父子级 包含关系的标签 一种是 兄弟级 并列关系的标签
三、CSS选择器
咱们数据解析部分对应使用的第三模块是parsel
pip install parsel
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。那么我们就可以使用css选择器,在html中找到数据所对应的标签。此方式也是一个专门在html中提取数据的方法。
1.标签选择器
标签选择器其实就是我们经常说的html代码中的标签。例如html、span、p、div、a、img等等;比如我们想要设置网页中的p标签内一段文字的字体和颜色,那么css代码就如下所示:
# 简化的html标签
html = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>标签选择器</title>
</head>
<style>p{color: #f00;font-size: 16px;}
</style>
<body><p>css标签选择器的介绍</p><p>标签选择器、类选择器、ID选择器</p><a href="https://www.baidu.com">百度一下</a><span> 我是一个span标签</span>
</body>
</html>
"""
import parselselector = parsel.Selector(html)span = selector.css('span').getall