BeatifulSoup在測試工做中的應用

  近期要作一個項目,重複性勞動比較多,小夥伴建議我用Jsoup,可是因爲項目緊急,我直接選擇了BeautifulSoup,關鍵緣由是我Java語言不如Python掌握的熟練啊!因此,查了一圈它的中文文檔,發現還能夠,上手入門不難。這是BeautifulSoup的中文文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 。簡單介紹下項目背景:有上百個PC頁面須要檢查文字是否含有某個關鍵詞語,這個詞語咱們叫它「計算機」吧,排查「計算機」和「jisuanji」拼音不分大小寫。以前和同事作過seo相關的項目,要檢查html文檔中head中的meta標籤。她當時用的jsoup,我就想到我是否也能,因此也專門請教了之前作爬蟲的朋友,他們直接給我推薦的這個模塊BeautifulSoup。html

  實現思路:python

  1、讀取文檔正則表達式

    這部分是urls在excel文檔中第5列,這個文件是本身寫的配置文件,因此用列索引讀取就行,這部分做爲公用方法拿出來用。 app

#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

  2、解析文檔: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))

  

  3、正則表達式匹配測試

    代碼在上面貼了url

就是這樣,最後檢測除了不少資源文件的引用的靜態資源有關鍵詞。這樣大大的節省了本身的測試時間。excel

相關文章
相關標籤/搜索