爬虫之xpath

response的几个小知识点:
1.response.text 和response.content有什么区别?

答:%1. response.content这个是直接从网络上抓取的数据,没有经过任何解码,所以返回的数据类型是一个bytes类型。(在硬盘上和在网络上传输的字符串都是bytes类型。)

%2.response.text这个是方法返回的数据类型是文本形式。他其实是将response.text返回的bytes类型的数据进行了解码
2.response.encoding是做什么用的?

查看响应头部字符编码
3.response.status_code是做什么用的?

查看响应的状态码,如果是200的话表示正常,否则错误。

下面我们来了解一下xpath
首先我们先来了解一下从网上爬取数据的方法有哪些?(之前在爬虫知识点总结这篇博客中写过)

%1.xpath(一般用来爬取小型的数据,比较简单)
%2.urlib模块(urllib模块只接受字符串参数,不能指定请求数据的方法,更无法设置请求报头。因此,urllib2被视为爬取数据所用“浏览器”的首选。)
%3.bs4(全称:beautifulsoup4Beautiful Soup他是python的第三方库,可以帮助我们从网页源码中找到我们需要的数据。Beautiful Soup可以从一个HTML或者XML提取数据,它包含了简单的处理、遍历、搜索文档树、修改网页元素等功能)
%4.re正则(爬取大量数据)

四种安装方法都是:pip install ^^

好,下面我们来详细讲解一下xpath这种方法

1.安装:pip install xml
pip install xpath
XPath 使用路径表达式在 XML 文档中选取节点,节点是沿着路径或者 step 来选取的。

2.什么是xml?
xml是用来存储和传输数据使用的
在这里插入图片描述
(图片来自w3cSchool截屏,关于xml大家可以在w3cschool上详细了解。参考链接:http://www.w3school.com.cn/xml/xml_intro.asp)

扩展:xml与HTML的区别
$1.XML 被设计为传输和存储数据,其焦点是数据的内容。
$2.HTML 被设计用来显示数据,其焦点是数据的外观。
$3.HTML 旨在显示信息,而 XML 旨在传输信息。
$4.HTML中的标签是固定的,xml中的标签是自定义的。

3.什么是xpath?
xpath用来在xml中查找指定的元素,他是一种路径的表达式。

4.常用的路径表达式:
nodename 选取当前节点的所有子节点
/ 从根节点选取
// 不考虑它们的位置 从匹配选择的当前节点选择文档中的节点
. 选取当前节点
… 选取当前节点的父节点
@ 选取属性

5.实例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE school  SYSTEM  'school.dtd'>
<students>
	<student   class='1807c1'>
		<name len=2>苗子</name>
		<sex>女</sex>
	</student>	
	<student class='1807C2'>
		<name len=3>李小花</name>
		<sex>女</sex>
	</student>

</students>

ps:这个文件是我用记事本写的,然后修改了他的扩展名才得到为xml文件,或者你们可以使用xml编辑器。
在这里插入图片描述
/students/student: 选取根节点students下面所有的student
//student: 从当前节点不按照位置查找student元素
/students/student[1]: 从根节点students下查找子节点student下的第一个元素
/students/student[last()]: students下的最后一个元素
/students/student[last()-1]: students 下的倒数第二个元素
//name[@len]: 所有带有len属性的name元素

6.选取未知节点:
*(星花) 匹配任何元素节点
@
* 匹配任何属性节点
node() 匹配任何类型的节点

实例:
/students/* 选取 students 元素的所有子节点
//* 选取文档中的所有元素
//name[@*] 选取所有带有属性的name元素。

在pycharm中操作:

1.导入库:
from lxml import   etree
2.获取文件
tree=etree.parse(文件名)
或者
tree=etree.HTML(网页字符串)

小案例:

from  lxml import  etree
#生成对象:
tree=etree.parse('xpath.html')
res=tree.xpath('//div[@class=”tang”]/ul/li[1]/text()')#打印出文本的内容
print(res)#返回的结果是一个列表

ps:大致的套路就是这样了,泥萌下去可以练习练习

4、 //tr[position()>1]这个规则是用来匹配什么的?
从第二个标签进行全局查找所有的tr标签

5 、//a/@href这个规则是用来查找什么的?
全局查找a标签下的href属性

6、 ./td[3]/text()这个规则是用来查找什么的?
当前标签下查找第三个td标签中的文本内容

7 、 //div[@class=‘nowplaying’]//ul[@class=‘lists’]/li这个规则是用来查找什么的?
从class=‘nowplaying’的div下进行全局查找所有的属性为class=‘lists’ 的ul标签下的直接节点li

8、 ./td[1]/a/text()/这个规则是用来查找什么的?
他是用来在当前标签下查找第一个td的子节点a标签的文本内容

9、 /html/body/p/这个规则是用来查找什么的?
从根节点开始查找html下的直接子元素body的直接子元素p标签

10、.//td[@class=‘even’ or @class=‘odd’]这个规则是用来查找什么的?
从当前标签下查找所有的属性为class=‘even’或者是属性为class=‘oddj’的td标签

11.tag.contents 和tag.childen 的区别?
同:查找当前标签下的所有字标签
异:contents返回值是list
childen返回的值是iterables(迭代器)

12.tag.find()和tag.find_all()的区别?
tag.find()查找第一个满足条件的标签。
tag.find_all()查找所有满足条件的标签
返回值都是一个列表

13.有变量名为tag的Tag类对象,请写出代码,打印输出当前tag标签下的所有a标签的链接地址

	a_list=tag.find_all('a')
	for i in a_list:
		print(href[i])

14.有变量名为tag的Tag类对象,请写出代码,获取当前标签下的ul标签下的直接子标签li

a_list=tag.select('ul>li')

15.有变量名为tag的Tag类对象,请写出代码,获取当前标签下id='over’的标签下的class=‘content’的标签

t=tag.select('#over  .content')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值