Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >兼利通分析如何利用python进行网页代码分析和提取

兼利通分析如何利用python进行网页代码分析和提取

作者头像
用户7633552
修改于 2020-08-10 02:39:36
修改于 2020-08-10 02:39:36
1.4K0
举报

一、实验目的

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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
单篇长文TestNG从入门到精通
TestNG是Test Next Generation的缩写,它的灵感来自于JUnit和NUnit,在它们基础上增加了很多很牛的功能,比如说:
dongfanger
2022/05/09
1.7K0
单篇长文TestNG从入门到精通
Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)
TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行)。
北京-宏哥
2019/11/10
2K0
Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)
@Test注解上可通过配置threadPoolSize来实现并发,threadPoolSize和invocationCount是结合使用的,当invocationCount=1的时候,threadPoolSize没有意义。invocationCount表示方法被调用的次数,如果不配置threadPoolSize,该方法会被顺序执行5次,如果配置threaPoolSize=4,下图所示的方法会一次以4个线程并发执行,缩短执行时间。
北京-宏哥
2019/11/13
1.2K0
Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的。通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件。简单来说,利用这个文件,我们可以跑同一个类或者多个不同类里面的测试用例。
北京-宏哥
2019/11/14
2.6K0
实战 TestNG 监听器
TestNG 是一个开源的自动化测试框架,其灵感来自 JUnit 和 NUnit,但它引入了一些新功能,使其功能更强大,更易于使用。TestNG 的设计目标是能够被用于进行各种类型测试:单元测试、功能测试,端到端测试、集成测试,等等。NG 是 Next Generation 的简写,表示下一代,意在表示其产生的目的是要超越当前所有测试框架。TestNG 类似于 JUnit(特别是 JUnit 4),但它不是 JUnit 的扩展,而是独立的全新设计的框架。TestNG 的创造者是 Cedric Beust(塞德里克·博伊斯特)。
顾翔
2019/12/11
1.2K0
实战 TestNG 监听器
走进Java接口测试之测试框架TestNG
TestNG 是一个受 JUnit 和 NUnit 启发的测试框架测试框架,旨在简化广泛的测试需求,从单元测试到接口测试。 但引入了一些新功能,使其更强大,更易于使用,例如:
高楼Zee
2019/07/17
3.9K0
自动化测试框架TestNG
由于我对java比较熟悉,所以就从TestNG框架开始学习自动化接口测试。和Junit相比,TestNG比较适合测试人员使用,因为
yuanyuan
2019/09/02
3.3K0
自动化测试框架TestNG
《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享。
北京-宏哥
2022/04/27
5470
《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
走进Java接口测试之测试框架TestNG数据驱动(入门篇)
我们在前面的文章中,和大家分享过接口自动化测试一些基本的实现方法,但是,你很快就会发现,如果在测试脚本中硬编码测试数据的话,测试脚本灵活性会非常低。而且,对于那些具有重复的请求,而只是测试入参不同的用例来说,就会存在大量重复的代码。那么怎么把自己从简单、重复的工作中解放出来呢?这个时候我们应考虑把测试数据和测试脚本分离,也就是说数据驱动。
高楼Zee
2019/11/25
3.1K0
Java自动化测试框架-02 - TestNG之理论到实践 - 纸上得来终觉浅,绝知此事要躬行(详细教程)
TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试。 因为TestNG是从Junit的思想构建而来,所以TestNG具备junit等所不具备的多重功能。而且TestNG目前的使用比较广泛,google的一个selenium自动化项目组即采用的是selenium rc的java 接口+ testNG结合的方式。 写一个测试通常分为三步: 1.编写测试业务逻辑,并且在你的代码中插入 TestNG annotations 。 2.在 testng.xml 或 build.xml 添加你的测试信息。例如类名,希望运行的组等等 3.运行TestNG. 文档中会使用到如下的概念: 1.一套测试(suite)由一个XML文件所表示。它能够包含一个或者多个测试,<suite> 标记来定义。 2.test由<test>标记来表示一个测试,并且可以包含一个或者多个TestNG类。 3.TestNG 类是包含至少一个TestNG annotation的java类,由<class>标签描述并包含一个或多个测试方法。 4.测试方法,就是一个普通的Java方法,在由@Test标记。 testNG.xml testNG的运行需要一个配置文件,默认为testng.xml,其描述了要运行哪些测试等配置。 编写testNG.xml如果没有书写提示,给在头部引入 <!DOCTYPE suite PUBLIC "--//beust.com//testng//testng 1.0//EN" "http://beust.com/testng/testng-1.0.dtd" >就会有提示了实践
北京-宏哥
2019/10/21
1.3K0
Java自动化测试框架-02 - TestNG之理论到实践 - 纸上得来终觉浅,绝知此事要躬行(详细教程)
Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)
  最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢。今天继续介绍testng的相关知识--工厂。
北京-宏哥
2019/11/08
1.1K0
Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)
其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识。希望大家茅塞顿开 ,有着更进一步认识和了解测试组。
北京-宏哥
2019/10/24
1K0
TestNG官方文档中文版(4)-运行TestNG
4 - 运行TestNG TestNG可以以不同的方式调用:     * Command line     * ant     * Eclipse     * IntelliJ's IDEA 1) 命令行 假设你已经将TestNG加入到class path,调用TestNG最简单的方法事下面的:
流柯
2018/08/30
2K0
《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
  其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果、失败点和失败原因。另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要。默认情况下,TestNG 会为其测试执行生成不同类型的报告。这包括一个 HTML 和一个 XML 报告输出。TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用。还有一个选项可以编写自己的记录器,TestNG 在运行时会通知这些记录器。
北京-宏哥
2022/04/27
9730
《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
TestNG排名第一的测试框架
TestNG是Test Next Generation的缩写,如果说在测试界TestNG是第一测试框架,那么很难有第二个测试框架能跟它一比高下。在Java自动化领域,TestNG更是已经成为行业标配了。TestNG无人不知无人不晓,但是对它有深入了解的,还是比较少的。本系列文章就跟随着官方文档的步伐,由浅入深地对TestNG进行全方面的学习。
dongfanger
2021/12/20
7520
TestNG排名第一的测试框架
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
TestNG为日志记录和报告提供的不同选项。现在,宏哥讲解分享如何开始使用它们。首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录。
北京-宏哥
2022/04/27
4760
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
TestNG
数据提供者@DataProvider 注解@DataProvider在参数化测试中起到重要的作用,该注解下的函数返回数据类型需要时Object[][],看例子如何实现:
郭顺发
2021/12/17
9660
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
  其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果、失败点和失败原因。另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要。默认情况下,TestNG 会为其测试执行生成不同类型的报告。这包括一个 HTML 和一个 XML 报告输出。TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用。还有一个选项可以编写自己的记录器,TestNG 在运行时会通知这些记录器。
北京-宏哥
2022/04/27
1K0
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
Java自动化测试框架-10 - TestNG之测试结果篇
测试被认为是成功的,如果它不引发任何异常完成,还是它扔的预期异常(请参阅文档expectedExceptions属性上找到的@Test注释)。
北京-宏哥
2019/11/12
1.5K0
Java自动化测试框架-10 - TestNG之测试结果篇
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来。
北京-宏哥
2022/04/27
4620
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
推荐阅读
单篇长文TestNG从入门到精通
1.7K0
Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)
2K0
Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)
1.2K0
Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
2.6K0
实战 TestNG 监听器
1.2K0
走进Java接口测试之测试框架TestNG
3.9K0
自动化测试框架TestNG
3.3K0
《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
5470
走进Java接口测试之测试框架TestNG数据驱动(入门篇)
3.1K0
Java自动化测试框架-02 - TestNG之理论到实践 - 纸上得来终觉浅,绝知此事要躬行(详细教程)
1.3K0
Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)
1.1K0
Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)
1K0
TestNG官方文档中文版(4)-运行TestNG
2K0
《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
9730
TestNG排名第一的测试框架
7520
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
4760
TestNG
9660
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
1K0
Java自动化测试框架-10 - TestNG之测试结果篇
1.5K0
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
4620
相关推荐
单篇长文TestNG从入门到精通
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档