近期要做一个项目,重复性劳动比较多,小伙伴建议我用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. Elasticsearch 基于external的乐观锁的版本控制

    version_type=external,唯一的区别在于,_version,只有当你提供的version与es中的_version一模一样的时候,才可以进行修改,只要不一样,就报错:当version ...

  2. 解了这14道C语言谜题后,所有人都失声了!我来带你深入了解C!

    本文展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且有相当的一些例子可能是我们日常工作可能会见得到的.通过这些迷题,希望你能更了解C语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...

  3. centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  4. nginx安全:修改对外的服务软件名称并隐藏版本号(nginx1.18.0)

    一,为什么要隐藏nginx真实的软件名称? 1,nginx响应的Server头部都会携带上服务软件的名字和版本信息, 服务器软件的版本信息暴光在外部,很容易被黑客了解到,就通过相应版本的漏洞来攻击服务 ...

  5. ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)

    一,ansible的user/group模块的用途: ansible的user模块用来实现:生成用户.删除用户等用户的管理ansible的group模块用来实现:生成组.删除组等组的管理 说明:刘宏缔 ...

  6. scrapy 采集数据存入excel

    # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to t ...

  7. Seaborn中几种作图方式

    趋势 sns.pointplot - 点图 ,比折线图好使 sns.lineplot - 折线图最适合显示一段时间内的趋势,多条线可以用来显示多个组中的趋势. 关系 - 可以使用许多不同的图表类型来理 ...

  8. 【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务

    1)Software Protection 与 Windows Defender是两个独立的服务.在Windows 服务中他们的描述分别为 Software Protection Enables th ...

  9. MVC查询

    前言 最近没什么好写的,所以写个查询来巩固一下知识 HTML @{ Layout = null; } <!DOCTYPE html> <html> <head> & ...

  10. Deepin v15.11驱动安装问题

    最近想用Linux跑深度学习,试了好几个发行版,最终选择了Deepin v15.11,但由于配置比较新,它不能兼容很多驱动,还得自己装,以下是我失败N次后得到的经验: 电脑配置 配置如下: 型号:DE ...