网页主要由三部分组成:结构,表现,行为
(1)结构化标准语言主要包括XHTML,XML
(2)表现标准语言主要包括CSS
(3)行为标准主要包括w3c dom, ecmascript等。
XPath是一种用于选择XML(可扩展标记语言)文档中节点的语言,也可以用于HTML文档。XPath通过路径表达式来定位节点,类似于文件系统中的文件路径,可以精准地定位到特定的节点或者一组节点。
XPath语法主要由以下几个部分组成:
节点选择器:XPath中所有内容都被视为节点,可以使用/
或//
来使XPath沿着节点层次结构向下遍历。/
表示只查找直接子节点,而//
表示查找所有后代节点。
谓语(Predicate):谓语是指在路径表达式中所包含的方括号[]
内的条件表达式,用于筛选符合条件的节点。例如,//div[@class='content']
表示匹配所有class属性值为content的div节点。
通配符:XPath中使用*
表示匹配任何节点,使用@*
表示匹配任何属性节点。
轴(Axis):轴是相对当前节点的节点集合。XPath提供了多个轴,例如ancestor
轴表示当前节点的所有祖先节点,following-sibling
表示当前节点之后的所有兄弟节点。
函数:XPath中内置了多个函数,例如text()
函数用于获取元素的文本内容,contains()
函数用于判断某个字符串是否包含另一个字符串。
XPath是在XML和HTML文档中定位和选择节点的强大工具,可以在Scrapy、BeautifulSoup等爬虫框架中广泛使用。
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。
XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
例:
eg.xml
Everyday Italian
Giada De Laurentiis
2005
30.00
Harry Potter
J.K. Rowling
2005
29.99
Learning XML
Erik T. Ray
2003
39.95
例:read_xml.py
from lxml import etree
# 加载XML文档
with open('/xxx/xxx/eg.xml', 'r') as f:
xml_data = f.read()
# 将XML字符串解析成树形结构
root = etree.fromstring(xml_data)
# 选择所有book节点以及它们的title节点
books = root.xpath('//book')
for book in books:
print(book.xpath('title/text()')[0])
使用lxml
库和XPath语法选择出bookstore
节点下所有的book
节点的title
节点.
[ from lxml import etree]
是Python中常用的导入lxml
库中的etree
模块。lxml
是一个Python的XML和HTML处理库,比Python标准库中的xml.etree.ElementTree
模块更加强大和高效。
在使用XPath语法进行XML或HTML节点的选择时,通常需要使用lxml
库中的etree
模块。该模块提供了Element
类,可以将XML或HTML文档解析成一个树形结构,然后可以使用XPath语法选择对应的节点。
以上详细的语法,和相关的知识点,需要自己简单学习下
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以易于人阅读和编写的文本格式为基础,常用于前后端数据交互。JSON格式由键值对组成,其中键必须是字符串,值可以是字符串、数字、布尔值、数组、对象等类型。
JSON的主要特点包括:
简洁性:JSON采用了类似于Python字典的键值对格式,使得数据结构更加清晰和简洁。
可读性:JSON采用文本格式存储数据,易于人类阅读和编写,方便调试和理解。
跨语言性:JSON是一种通用的数据格式,几乎所有编程语言都支持JSON的解析和生成,因此在不同语言之间进行数据交换非常方便。
轻量级:相比XML等其他格式,JSON文件通常更小,占用的空间更少,传输速度更快。
一个简单的JSON示例如下:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "New York"
}
}
在上面的JSON中,有几个重要的部分:
"name": "Alice"
:键值对,键是字符串,值是字符串。"age": 30
:键值对,键是字符串,值是数字。"is_student": false
:键值对,键是字符串,值是布尔值。"courses": ["Math", "Science"]
:键值对,键是字符串,值是数组。"address": {...}
:键值对,键是字符串,值是另一个JSON对象。在Python中,可以使用json
库来处理JSON数据,实现JSON数据与Python数据类型之间的转换。可以通过json.dumps()
方法将Python数据转换为JSON字符串,通过json.loads()
方法将JSON字符串转换为Python数据类型。这样就可以在Python程序中方便地操作JSON数据。
json比xml更小、更快、更易解析,由此json在网络传输中,尤其是web前端中运用非常广泛。
例:data.json
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "New York"
}
}
例:read_json.py
import json
# 读取包含JSON数据的文件
with open('/xxx/xxx/data.json', 'r') as file:
json_data = json.load(file)
# 输出解析后的Python数据结构
print(json_data)