BeatifulSoup在测试工作中的应用
近期要做一个项目,重复性劳动比较多,小伙伴建议我用Jsoup,但是由于项目紧急,我直接选择了BeautifulSoup,关键原因是我Java语言不如Python掌握的熟练啊!所以,查了一圈它的中文文档,发现还可以,上手入门不难。这是BeautifulSoup的中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 。简单介绍下项目背景:有上百个PC页面需要检查文字是否含有某个关键词语,这个词语我们叫它“计算机”吧,排查“计算机”和“jisuanji”拼音不分大小写。之前和同事做过seo相关的项目,要检查html文档中head中的meta标签。她当时用的jsoup,我就想到我是否也能,所以也专门请教了以前做爬虫的朋友,他们直接给我推荐的这个模块BeautifulSoup。
实现思路:
一、读取文档
这部分是urls在excel文档中第5列,这个文件是自己写的配置文件,所以用列索引读取就行,这部分作为公用方法拿出来用。
#coding=utf-8
import pandas as pd def ge_url():
data = pd.read_excel("urls.xlsx",sheet_name="Sheet1",usecols=[4],names=None)
data.values.tolist()
list_url=[]
for i in data.values.tolist():
list_url.append(i[0])
return list_url
二、解析文档:head和body分别解析
#coding=utf-8 from bs4 import BeautifulSoup
import requests
import re
import get_url urls=[]
urls = get_url.ge_url()
print(urls)
for url in urls: re_content = requests.get(url).content
# 构造函数可以指定解析器
soup = BeautifulSoup(re_content,'html.parser') #先判断head
docu_head = soup.head
list_head=[]
print("++++++++++++++++++++++++++++++++++++") #声明jisuanji或者计算机字符串匹配正则表达式的对象,不区分大小写
parttern = re.compile(r'jisuanji|计算机',flags=re.I) #寻找所有head的子节点
for item in soup.head.contents:
list_head.extend(parttern.findall(str(item)))
if list_head !=[]:
print("HEAD+THIS URL IS ILLEGAL!"+url+str(list_head)) print("===============================================") #后判断body
list_body=[]
#查找body的所有子孙节点
docu_body = soup.body.descendants
for child in docu_body:
list_body.extend(parttern.findall(str(child)))
if list_body!=[]:
print("BODY+THIS URL IS ILLEGAL!"+url+str(list_body))
三、正则表达式匹配
代码在上面贴了
就是这样,最后检测除了很多资源文件的引用的静态资源有关键词。这样大大的节省了自己的测试时间。
BeatifulSoup在测试工作中的应用的更多相关文章
- 测试工作中经常用到的几个Linux命令(第一弹)
自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题(顺便迈向 ...
- 测试工作中经常用到的一丢Linux命令
自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题 1.cd ...
- 测试工作中ADB命令实战
作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
- LoadRunner测试场景中添加负载生成器
如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...
- 运维工作中sed常规操作命令梳理
sed是一个流编辑器(stream editor),一个非交互式的行编辑器.它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲 ...
- Hbase的安装测试工作
Hbase的安装测试工作: 安装:http://www.cnblogs.com/neverwinter/archive/2013/03/28/2985798.html 测试:http://www.cn ...
- 工作中常用的QTP操作Excel函数
前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...
- linux工作中遇到的问题总结---更新中
今天这个,严格来说不算一篇文章,我只想把我工作中遇到的问题分享给大家,让大家少犯错误. 1.安装rmp包时出现错误 :header V3 DSA signature: nokey ,key id .. ...
随机推荐
- 网络io控制器
网络io控制器 网络io控制器 ZLAN6842,ZLAN6844是8路远程网络IO控制器.含有8路DI.8路DO,8路AI输入.其中DI支持干节点和湿节点,带光耦隔离:DO为继电器输出,具有5A 2 ...
- day41 Pyhton 并发编程04
内容回顾 socket 最底层的网络通信 所有的网络通信都是基于socket 进程 什么是进程? 是操作系统的发展过程中,为了提高cpu的利用率,在操作系统同时运行多个程序的时候,为了数据的安 ...
- Apollo基于K8S的部署以及接入
Apollo镜像服务 基于开源Apollo服务进行相关服务镜像打包,实际将分发apollo-adminservice.apollo-configservice和apollo-portal 这三个镜像安 ...
- html中object标签
首先将这个强大web页面打印例子(pintTest.html)贴上来. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional ...
- C++学习笔记---指针
1.基本概念 作用:可以通过指针直接访问内存 内存编号是从0开始记录的,一般用16进制数字表示 可以利用指针变量保存地址 2.定义和使用 定义指针 他们的关系就是这样的 运行输出 使用指针 运行输出会 ...
- 【Azure DevOps系列】Azure DevOps使用Docker将.NET应用程序部署在云服务器
Docker持续集成 本章我们要实现的是通过我们往代码仓库push代码后,我们将每次的push进行一次docker自动化打包发布到docker hub中,发布到之后我将进行部署环节,我们将通过ssh方 ...
- 简述BIO到NIO的过程
BIO到NIO的图示
- 使用Socket通信(一)
使用socket需要一个服务器,我用的是tomcat,好像AS不支持Tomcat了,还有什么好的服务器求推荐,使用Tomcat去官网下载,然后还要安装Java的jdk,然后配置jak环境变量,然后配置 ...
- SpringBoot+JPA+SpringSeurity+JWT
目的:使用这个框架主要就是为了解决高并发环境下登陆操作对数据库及服务器的压力,同时能保证安全性: 加载时,SpringSecurity定义拦截器和添加两个Fitler: 登陆时,登陆成功,通过传入的信 ...
- 项目开发中的pro、pre、test、dev环境及SpringBoot多环境配置
一.介绍: pro:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境. pre:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样. test:测试环境,外部用户无法访问,专 ...