近期要做一个项目,重复性劳动比较多,小伙伴建议我用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在测试工作中的应用的更多相关文章

  1. 测试工作中经常用到的几个Linux命令(第一弹)

    自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题(顺便迈向 ...

  2. 测试工作中经常用到的一丢Linux命令

    自己平时测试工作中经常要在Linux下搭建测试环境,有涉及到启动/终止服务器,修改tomcat配置文件,偶尔碰到端口被占用... 这时就不得不需要一些基本的Linux命令来处理遇到的这些问题 1.cd ...

  3. 测试工作中ADB命令实战

    作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...

  4. [工作中的设计模式]享元模式模式FlyWeight

    一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...

  5. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

  6. 运维工作中sed常规操作命令梳理

    sed是一个流编辑器(stream editor),一个非交互式的行编辑器.它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲 ...

  7. Hbase的安装测试工作

    Hbase的安装测试工作: 安装:http://www.cnblogs.com/neverwinter/archive/2013/03/28/2985798.html 测试:http://www.cn ...

  8. 工作中常用的QTP操作Excel函数

    前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...

  9. linux工作中遇到的问题总结---更新中

    今天这个,严格来说不算一篇文章,我只想把我工作中遇到的问题分享给大家,让大家少犯错误. 1.安装rmp包时出现错误 :header V3 DSA signature: nokey ,key id .. ...

随机推荐

  1. php使用xpath爬取内容

    <?php $html = file_get_contents('https://tieba.baidu.com/f?kw=%C9%EE%BB%A7&fr=ala0&loc=re ...

  2. CentOS 6编译安装Redis

    [root@localhost ~]# vim /etc/sysconfig/iptables # 添加如下:-A INPUT -m state –state NEW -m tcp -p tcp –d ...

  3. mybatis 架构及基础模块

    1. mybatis整体架构 基础支撑层详解 1.日志模块 mybatis日志模块没有实现类,需要接入第三方的组件,问题是第三方的组件有各自的log级别,为了能接入第三方组件,mybati日志模块定义 ...

  4. (Pytorch)涉及的常见操作

    涉及一些pytorch的API内容在此进行整理 损失函数:Binary-Cross-Entropy loss criterion = nn.BCECriterion() 创建一个标准来度量目标和输出之 ...

  5. SpringMVC+Spring+MyBatis个人技术博客源码

    项目描述 Hi,大家好,又到了源码分享时间啦,今天我们分享的源码一个<个人技术博客>,该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习.有了这个源码,直接买 ...

  6. 从APT攻击中学习

    0x01. 什么是APT? 可以看出APT攻击,叫高级可持续威胁攻击,也称为定向威胁攻击:什么是定向,也就是指定目标行业而发起进攻 这边又提到供应链和社会工程学,那是什么? 社会工程学,也就是社工,通 ...

  7. 显示器类型对美乐威NDI IP转换器延时影响测试

    背景 用户在选择用网络传输视频时,传输延迟通常是他们非常关心的数据.集成商在探究如何降低视频传输延时,往往专注于网络本身和视频编码的优化,容易忽略视频解码和播出也是整个视频传输过程中非常重要的环节.本 ...

  8. Azure Cosmos DB (四) 使用EF的SQL API 异地冗余

    一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...

  9. 批量安装Zabbix_Agent

    使用自动化部署工具Ansible批量部署zabbix_agent. 1. 安装Ansible yum –y install ansible 内网情况下,现在ansible及其依赖的rpm包,添加到yu ...

  10. 4G DTU模块和串口设备连接的方式

    首先说下解决思路: 由于考虑到串口开发很麻烦,所以后来买了一个4g模块的dtu. 所以最后的解决方案是,plc串口设备与dtu相连,由于dtu是透传模式,使用java与4g模块进行通信就完事了. 虽然 ...