• 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))
    

      

      三、正则表达式匹配

        代码在上面贴了

    就是这样,最后检测除了很多资源文件的引用的静态资源有关键词。这样大大的节省了自己的测试时间。

  • 相关阅读:
    git commit 合并
    git 管理 Linux 文件系统
    python 全局变量的使用
    JavaScript 中 类型转换
    canconfig 配置命令
    python 调用 shell 命令
    python 3 操作mysql数据库的方法
    python 字符串和整数,浮点型互相转换
    JavaScript 里面的整数 位 操作
    JavaScript 使用 php 的变量
  • 原文地址:https://www.cnblogs.com/yuki-nana/p/10799771.html
Copyright © 2020-2023  润新知