1、认识xpath和正则表达式
2、理解常用xpath和正则表达式规则
3、理解email地址混淆原理
1、使用xpath提取网页数据
2、使用正则表达式提取网页数据
3、对加密数据进行分析和解码
1、人员组织
以小组为单元进行实验,每小组5人,小组自协商选一位组长,由组长安排和分配实验任务,具体参加实验内容中实验过程。
2、环境要求
python-3.6.4-amd64.exe
python-3.6.4.exe
1、xpath
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSLT间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。有关xpath的详细教程,请访问:http://www.w3school.com.cn/xpath/index.asp。
2、正则表达式
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。有关正则表达式的详细教程,请访问:http://www.runoob.com/regexp/regexp-syntax.html ,还可以在https://regex101.com/输入表达式,用于测试正则表达式。
3、Javascript
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
是一种解释性脚本语言(代码不进行预编译)。
主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
1、使用xpath将所有满足条件的数据提取
先在cmd输入pip install lxml,确认安装好lxml库。
在任意位置创建crawler4.py,输入如下代码:
此代码的作用是提取所有td标签下所有被标签包裹的文字。结果如下:
2、使用xpath提取特定类型的标签
在任意位置创建crawler5.py,输入如下代码:
第1个xpath语句的作用是提取所有带title参数的标签框起来的文字;第2个xpath语句的作用是提取所有target参数值为_blank,并且href参数值包含iPhone的标签所属href参数值。运行结果如下:
3、使用正则表达式提取
在任意位置创建crawler6.py,输入如下代码:
第1个表达式的作用是选出所有special_后面带数字和html后缀的链接;第2个表达式的作用是选出host是yangsheng.eastday.com的链接(完整链接由一对半角双引号括起来),运行结果如下:
特定链接全部选出。
4、分析JS以解密被CloudFlare混淆的邮箱地址
打开http://www.kingdeesoft.com/show-40704-0.html,可观察到有一行被加密的email代码,由于此网页上解密代码丢失,在百度搜索类似代码,可找到对应的script代码:
对script标签内代码分析过后,可以得到相应的解密策略。要注意的是JS和Python的某些函数处理机制和格式不一样,要完成解密还需要了解对应JS函数的功能,可以在chrome的调试窗口->Source->Snippet里面输入对应代码,并使用console.log输出中间结果,与对应Python函数进行比较。
在任意位置创建crawler7.py,输入如下代码:
其中xpath语句的作用是提取带加密邮箱的标签,并把加密后编码提取出来。运行结果如下:
本实验通过使用Python对网站数据进行提取,了解xpath和正则表达式的使用,学会分析简单加密JS代码。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。