python爬虫(xpath)

一、什么是xml
	1、定义:可扩展性标记语言
	2、特点:xml是具有自描述结构的半结构化数据。
	3、作用:xml主要设计宗旨是用来传输数据的。它还可以作为配置文件
二、xml和html的区别:
	1、语法要求不同:xml的语法要求更严格
		(1)html不区分大小写,xml区分
		(2)html有时可以省却尾标签。xml不能省略任何标签,严格按照嵌套首位结构。
		(3)只有xml中有自闭标签(没有内容的标签,只有属性)<a class'abc' />
		(4)在html中属性名可以不带属性值。xml必须带属性值。
		(5)在xml中属性必须用引号括起来,html中可以不加引号
	2、作用不同:
		html主要设计用来显示数据以及更好的显示数据
		xml主要设计宗旨就是用来传输数据
	3、标记不同:xml没有固定标记,html的标记都是固定的,不能自定义。
三、xpath
	1、什么是xpath?
		xpath是一种筛选html或者xml页面元素的语法。
	2、xml和html的一些名词:
		元素、标签、属性、内容
	3、xml的两种解析方法:
		dom和sax
	4、xpath语法:
		(1)选取节点:
			nodename --- 选取此标签及其所有字标签
			/ --- 从根节点开始选取
			// --- 从任意节点开始,不考虑他们的位置。
				eg://book --- 不管book位置,在xml中取出所有的book标签。
			. --- 当前节点开始找
			.. --- 从父节点
			@ --- 选取属性
			text() --- 选取内容
		(2)谓语:起限定的作用,限定他前面的内容。
			[] 写在谁后面就限定谁,一般用于限定元素或者标签
			 	eg://book[@class='abc']
			常见谓语:
				[@class] --- 选取所有class
				[@class='abc'] --- 选取class属性为abc的节点
				[contains(@href,'baidu')] --- 选取href属性包含baidu的标签
				[1] --- 选取第一个
				[last()] --- 选取最后一个
				[last()-1] --- 选取倒数第二个
				[position()>2] --- 跳过前两个
				book[price>30] --- price>30
		(3)通配符
			* --- 匹配任意节点
			@* --- 匹配任意属性
		(4)选取若干路径
			| ---左边和右边的xpath选的内容都要 ---and
	5、lxml模块 --- python处理xml和html的模块
		(1)解析字符串类型xml
			eg: from lxml import etree
				text='''
					html页面内容
				'''
				tree = etree.HTML(text) --- 返回值就是一个element对象
				# element对象有xpath方法,可以通过xpath表达式来筛选内容
				#选取class属性为item-1的li下面的a标签的内容
				a_contents = tree.xpath('//li[@class="item-1"]/a/text()')
				
				将element对象变成字符串的方法
				# html_str = etree.tostring(tree,pretty_print=True).decode('utf-8')
				# print(type(html_str))
			
				#elment对象xpath放来筛选,返回值都是一个list。
				#xpath表达式最后一个是一个元素(标签),list中都是elment元素
				#xpath表达式最后一个是属性,list都是属性字符串
				#xpath表达式最后一个是内容,list都是内容字符串
		(2)解析xml或者html文件:
			eg: from lxml import etree
				#parse方法是按照xml的方式来解析,如果语法出问题,就会报错。
				html = etree.parse('demo.html')
				# print(html)#_ElementTree
				li_texts = html.xpath('//li/a/text()')
				print(li_texts)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值