王群 陳艷芳
摘 ?要:食品檢驗標(biāo)準(zhǔn)數(shù)量多,更新快,標(biāo)準(zhǔn)查新工作較難開展。為了高效開展標(biāo)準(zhǔn)查新工作,特開發(fā)一種基于Excel VBA平臺的自動化程序。該程序通過自動分析網(wǎng)頁信息的方式開展標(biāo)準(zhǔn)查新工作。利用該文方法一分鐘最高可以查新15個標(biāo)準(zhǔn),程序使用門檻較低,自動化程度較高,能夠幫助檢驗機構(gòu)對標(biāo)準(zhǔn)信息進行分析和加工,提高了工作效率。
關(guān)鍵詞:食品檢驗;標(biāo)準(zhǔn)查新;自動化查新;VBA;Selenium
中圖分類號:TP311.5 ? 文獻標(biāo)識碼:A ? 文章編號:2096-4706(2023)16-0104-05
Implementing Automated Novelty Search for Inspection Standards Based on Excel Programs
WANG Qun, CHEN Yanfang
(Zhushan County Public Inspection and Testing Center, Shiyan ?442200, China)
Abstract: There are a large number of food inspection standards and they are updated quickly, making it difficult to carry out standard novelty search work. In order to efficiently carry out standard novelty search work, an automated program based on the Excel VBA platform has been developed. This program conducts standard novelty search work by automatically analyzing web page information. By using the method in this paper, up to 15 new standards can be found in one minute. The program has a low threshold for use and a high degree of automation, which can help inspection institutions analyze and process standard information and improve work efficiency.
Keywords: food inspection; standard novelty search; automated novelty search; VBA; Selenium
0 ?引 ?言
標(biāo)準(zhǔn)是檢驗檢測機構(gòu)衡量產(chǎn)品質(zhì)量的重要工具,檢測機構(gòu)工作的準(zhǔn)確性、公正性需要標(biāo)準(zhǔn)的支持,確保標(biāo)準(zhǔn)的時效性是檢驗檢測工作最重要的環(huán)節(jié)之一[1]。標(biāo)準(zhǔn)查新是檢驗機構(gòu)比較重要的工作之一,檢驗檢測機構(gòu)在使用國家,地方或者行業(yè)標(biāo)準(zhǔn)時,要認真地核實標(biāo)準(zhǔn),必須要保證標(biāo)準(zhǔn)時現(xiàn)行有效的狀態(tài)。
標(biāo)準(zhǔn)查新這是行業(yè)的法律法規(guī)以及認證認可標(biāo)準(zhǔn)的強制要求。CNAS-CL01《檢測和校準(zhǔn)實驗室能力認可準(zhǔn)則》7.2.1.3要求:“對于標(biāo)準(zhǔn)方法,應(yīng)定期跟蹤標(biāo)準(zhǔn)的制修訂情況,及時采用最新版本標(biāo)準(zhǔn)”。CMA評審準(zhǔn)則以及國家標(biāo)準(zhǔn)均要求實驗室標(biāo)準(zhǔn)為最新有效版本[2,3]。并且在檢驗檢測機構(gòu)資質(zhì)擴項或者更換到期的資質(zhì)證書工作中,專家組所需要的重要材料之一就是機構(gòu)的資質(zhì)標(biāo)準(zhǔn)的查新報告。
標(biāo)準(zhǔn)查新是檢驗檢測機構(gòu)自身技術(shù)能力提升的重要手段。一些標(biāo)準(zhǔn)在更新過程中,是朝著更精密,高效和統(tǒng)一的方向去做具體改進。檢驗檢測機構(gòu)通過標(biāo)準(zhǔn)查新,能夠迅速了解最新的檢驗檢測方法,能更加科學(xué)嚴謹?shù)亻_展工作。例如GB 5009.34-2022《食品安全國家標(biāo)準(zhǔn) 食品中二氧化硫的測定》標(biāo)準(zhǔn)和它的2016版對比,首先是在原先的方法基礎(chǔ)上,不僅進了蒸餾法,還增加了比色法和離子色譜法兩種檢驗方法。本次標(biāo)準(zhǔn)變更將食品行業(yè)中的二氧化硫測定與藥典對藥材的二氧化硫測定方法做了基本統(tǒng)一,這避免了一些藥食同源的產(chǎn)品,測量方法不能統(tǒng)一的弊病。與舊方法相比,新方法全程通氮氣保護,有效降低了平行實驗的相對偏差,在實驗精密程度方面,也有一定提升。
標(biāo)準(zhǔn)查新是檢驗檢測機構(gòu)有效開展質(zhì)量工作的根本前提。通過標(biāo)準(zhǔn)查新,能夠更好地把握最新的產(chǎn)品質(zhì)量要求,避免了出具錯誤的檢驗報告而導(dǎo)致糧食浪費,以及一些不必要的法律糾紛。如GB 2762—2022《食品安全國家標(biāo)準(zhǔn) 食品中污染物限量》的標(biāo)準(zhǔn)中,由于稻谷在碾磨加工成大米的過程中可以減少約50%的無機砷,稻米中無機砷限量設(shè)置與舊版本相比稻谷和糙米中無機砷限量由0.2 mg/kg調(diào)整為0.35 mg/kg。
食品行業(yè)標(biāo)準(zhǔn)查新目前主要有兩種手段,一種是手工查新,一種是委外機構(gòu)或者部門進行查新,這兩種方法都有各自優(yōu)缺點。
手工查新主要是檢驗檢測的標(biāo)準(zhǔn)管理相關(guān)人員,依次對自身資質(zhì)證書涉及的標(biāo)準(zhǔn),在互聯(lián)網(wǎng)上的一些網(wǎng)站,如食品安全國家標(biāo)準(zhǔn)數(shù)據(jù)檢索平臺(https://sppt.cfsa.net.cn:8086/db)、食安通(http://www.eshian.
com/)、食品伙伴網(wǎng)(http://down.foodmate.net/standard/
index.html)等進行人工檢索的方式,去獲取標(biāo)準(zhǔn)有效性等一些信息。手工查新在機構(gòu)規(guī)模比較小,資質(zhì)證書所涵蓋的標(biāo)準(zhǔn)數(shù)量比較少時,可以開展,當(dāng)檢驗檢測機構(gòu)的資質(zhì)證書涉及的標(biāo)準(zhǔn)數(shù)量較多時,手工查新效率低,易出錯的弊端就會暴露出來,影響機構(gòu)標(biāo)準(zhǔn)管理工作。
委外機構(gòu)查新,其實是檢驗檢測機構(gòu)通過購買第三法服務(wù)的方式,將檢驗檢測機構(gòu)的資質(zhì)標(biāo)準(zhǔn)整理好后,委托相關(guān)的機構(gòu),如檢驗檢測機構(gòu)當(dāng)?shù)厥袌霰O(jiān)督管理局,進行標(biāo)準(zhǔn)查新工作,并出具查新報告。委外機構(gòu)進行標(biāo)準(zhǔn)查新,盡管能夠解決一定的問題,但是在查新次數(shù)較多的情況下,檢驗檢測機構(gòu)需要承擔(dān)一定的時間和金錢成本,在信息對外傳遞過程中,甚至存在商業(yè)機密泄漏的風(fēng)險。
對于食品行業(yè)檢驗檢測機構(gòu)來說,一般一季度或者半年,就需要開展一次標(biāo)準(zhǔn)查新工作。國內(nèi)的食品涉及的標(biāo)準(zhǔn)較繁雜,且更新迅速,標(biāo)準(zhǔn)查新無論是采用手工查新,還是委外機構(gòu)查新,一直是一個較難開展的工作。據(jù)報道,已有一種基于Python的方法,利用計算機技術(shù)去實現(xiàn)標(biāo)準(zhǔn)查新[4]。但是這種方法,需要標(biāo)準(zhǔn)查新網(wǎng)站具有對應(yīng)的API(應(yīng)用程序編程接口)來對接,也需要去搭建Python平臺去實現(xiàn)代碼功能,其方法實施門檻較高,難以普及。
對于食品行業(yè)檢驗檢測機構(gòu)來說,存在較大的標(biāo)準(zhǔn)自動化查新的需求。但迄今為止,少見文獻報道如何利用計算機和互聯(lián)網(wǎng),自動開展食品行業(yè)領(lǐng)域的標(biāo)準(zhǔn)查新工作。
1 ?基于Excel的標(biāo)準(zhǔn)查新
Excel是標(biāo)準(zhǔn)管理者常用的辦公軟件之一,檢驗檢測機構(gòu)的資質(zhì)附表,一般就是保存在Excel表格中。并且,Excel自帶的VBA語言易于學(xué)習(xí)掌握,學(xué)習(xí)和使用的成本較低,用戶可以容易地將日常工作轉(zhuǎn)換為VBA程序代碼,使工作自動化[5]。
Selenium是Jason Huggins于2004年開發(fā)的,是一種開源免費的Web應(yīng)用程序自動化測試的軟件[6]。Selenium Basic是Selenium在VBA平臺上的開發(fā)的軟件庫,結(jié)合對應(yīng)瀏覽器的WebDriver使用,可以實現(xiàn)以較低學(xué)習(xí)成本實現(xiàn)Web應(yīng)用程序自動化。本文在Excel的VBA平臺上,編寫出自動檢索并識別標(biāo)準(zhǔn)信息的Web應(yīng)用程序代碼,利用海量的互聯(lián)網(wǎng)標(biāo)準(zhǔn)數(shù)據(jù)資源,來實現(xiàn)自動開展標(biāo)準(zhǔn)查新工作的目的。
1.1 ?前期準(zhǔn)備
軟件要求:電腦需要安裝EXCEL、Selenium Basic軟件以及Microsoft .NET Framework 3.5及以上,并將瀏覽器版本對應(yīng)的WebDriver復(fù)制到Selenium安裝目錄。以上Selenium Basic和WebDriver均可以在互聯(lián)網(wǎng)上免費獲取,WebDriver版本要和用戶電腦安裝的瀏覽器,如Chrome, Ms Edge, IE瀏覽器等版本一致。本文以Win 10操作系統(tǒng),Microsoft Excel 2019 Student and Home,Microsoft Edge瀏覽器版本“110.0.1587.57(正式版本)(64位)”以及對應(yīng)版本的WebDriver, NET Framework 4.0為例。
標(biāo)準(zhǔn)準(zhǔn)備:標(biāo)準(zhǔn)查新前,須對正在使用的標(biāo)準(zhǔn)進行系統(tǒng)梳理,將需要查詢的標(biāo)準(zhǔn)進行整理,如圖1所示將整理好的標(biāo)準(zhǔn)號填入表格第一列。
1.2 ?程序代碼
在填好對應(yīng)的標(biāo)準(zhǔn)代碼后,右擊左下角Sheet1查看代碼,進入VBA代碼編輯頁面。如圖1所示,點擊工具后點擊引用按鈕,將Selenium Type Library勾選并確認,再點擊插入按鈕,插入模塊1。為了便于使用和修改程序,本文代碼單引號后附帶的有對應(yīng)的注釋。如圖2所示,雙擊左側(cè)工程欄模塊1,在其內(nèi)輸入以下代碼:
Sub BZCX()
Dim str, str0, str1, str2 As String
Dim i, j, k As Integer
Application.ScreenUpdating = False
str0 = "http://down.foodmate.net/standard/search.php?corpstandard=2&fields=0&kw=" '將食品伙伴網(wǎng)搜索欄地址賦值給str0
Dim driver As New EdgeDriver
For i = 1 To ActiveSheet.[A65536].End(xlUp).Row '遍歷第一列所有的標(biāo)準(zhǔn)號
str = Cells(i, 1)
str = str0 & str '將標(biāo)準(zhǔn)號和食品伙伴網(wǎng)搜索欄網(wǎng)址通過連字符連接,為網(wǎng)頁檢索做準(zhǔn)備
driver.Get str '打開對應(yīng)的檢索網(wǎng)頁
driver.Wait "2500" '設(shè)置檢索間隔,防止時間耗盡
On Error Resume Next
str1 = driver.FindElementByXPath("/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a/img").Attribute("src") '將打開網(wǎng)頁的特征元素的文件名賦值給str1
str2 = driver.FindElementByXPath("/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a").Text '將打開網(wǎng)頁的特征文本內(nèi)容賦值給str2
If str1 = "http://down.foodmate.net/skin/default/images/xxyx.gif" Then '進行判斷看是否為現(xiàn)行有效,然后將信息賦值給對應(yīng)的第二列和第三列單元格
Cells(i, 2) = "現(xiàn)行有效"
Else
Cells(i, 2) = "需要確認"
End If
Cells(i, 3) = str2
Next
End Sub
1.3 ?查新數(shù)據(jù)分析和保存
在完成上述操作后,按F5運行程序即可開始標(biāo)準(zhǔn)自動查新。程序運行會在Excel界面上會出現(xiàn)一個瀏覽器界面,該界面即計算機自動檢索頁面。程序根據(jù)查新標(biāo)準(zhǔn)的數(shù)量,需要一定時間等待程序完成查新工作。
完成查新后,查新結(jié)果如圖2所示,其第一列是預(yù)先整理填好的待查新的標(biāo)準(zhǔn)號,表格的第二列是查新結(jié)果,如果標(biāo)準(zhǔn)不是現(xiàn)行有效,則會右側(cè)標(biāo)注“需要確認”。標(biāo)準(zhǔn)管理員可以直接篩選出需要確認的標(biāo)準(zhǔn),并保存表格結(jié)果,提交給機構(gòu)的技術(shù)負責(zé)人。技術(shù)負責(zé)人根據(jù)結(jié)果,將需要確認的標(biāo)準(zhǔn)進行查看,根據(jù)標(biāo)準(zhǔn)變化情況,再開展標(biāo)準(zhǔn)變更工作。
程序也會將標(biāo)準(zhǔn)的全部名稱抓取放在表格第三列,方便標(biāo)準(zhǔn)管理員管理標(biāo)準(zhǔn),可以在后續(xù)的資質(zhì)項目擴增或者資質(zhì)證書更換的工作中使用。
1.4 ?程序原理分析
本文涉及的程序,其原理是VBA代碼自動遍歷標(biāo)準(zhǔn)號,在食品伙伴網(wǎng)進行檢索,并通過識別網(wǎng)頁的特征標(biāo)識,來判斷該標(biāo)準(zhǔn)是否為現(xiàn)行有效。程序的自動識別和判定,是建立在對網(wǎng)頁信息的前期研究基礎(chǔ)上的。
以Edge瀏覽器為例,如圖3所示在程序中的網(wǎng)頁中GB/T 18810—2002標(biāo)準(zhǔn)進行檢索,利用瀏覽器的開發(fā)人員工具,選擇搜索結(jié)果標(biāo)準(zhǔn)名稱最左的“現(xiàn)行有效”這個元素進行檢查,發(fā)現(xiàn)其對應(yīng)的網(wǎng)頁代碼:
“==$0”。同樣的操作如圖4所示,對NY/T 832—2004這個標(biāo)準(zhǔn)進行檢索,對同樣位置的“即將廢止”元素檢
查,其對應(yīng)的網(wǎng)頁代碼是“==$0”。
在網(wǎng)頁圖片元素中,標(biāo)簽的src屬性的值是圖像文件的URL,也就是引用該圖像的文件的絕對路徑或相對路徑。
對比兩種標(biāo)準(zhǔn)對應(yīng)結(jié)果的元素所對應(yīng)的img src屬性,可以發(fā)現(xiàn)其與標(biāo)準(zhǔn)有效性有一定規(guī)律,現(xiàn)行有效的標(biāo)準(zhǔn)img src路徑為:“http://down.foodmate.net/skin/default/images/xxyx.gif”,即將廢止或者其他狀態(tài)的標(biāo)準(zhǔn)對應(yīng)位置的img src文件名不是該路徑。可以將src路徑里的網(wǎng)站復(fù)制到瀏覽器進行查看,可以看到其為寫有“現(xiàn)行有效”四個字的圖片。因此可以通過分析對應(yīng)位置元素的img src路徑,來對標(biāo)準(zhǔn)的有效性進行判斷。
在網(wǎng)頁中,XPath是一種表達式語言。它使用路徑表達式來選取XML文檔中的節(jié)點或節(jié)點集。通過它的定位作用,可以獲取網(wǎng)頁中的指定元素和指定節(jié)點的值,提取到我們想要的結(jié)果。
為了實現(xiàn)該目的,本文通過瀏覽器開發(fā)人員工具,獲取并復(fù)制寫有“現(xiàn)行有效”四個字的圖片元素完整的XPath為:
“/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a/img”,然后通過driver.FindElementByXPath語句,對指定XPath的元素的srcs屬性進行抓取,識別和判斷。完整代碼為:
“driver.FindElementByXPath("/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a/img").Attribute("src") ”。
同樣的原理,本文也分析了查詢結(jié)果的“標(biāo)準(zhǔn)名稱”一列的元素,其對應(yīng)代碼為" GB/T18810-2002糙米",代碼中“ ”在超文本標(biāo)記語言中是指輸出一個不換行空格。標(biāo)準(zhǔn)名稱一列元素均為Text純文本字段,內(nèi)容即是標(biāo)準(zhǔn)的全程??梢岳贸绦?qū)ξ谋具M行抓取并賦值到對應(yīng)單元格,獲取標(biāo)準(zhǔn)全稱。利用瀏覽器開發(fā)人員工具,獲取其完整Xpath為"/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a",具體實現(xiàn),也是通過和上述一致的driver.FindElementByXPath語句來實現(xiàn)。完整代碼為“driver.FindElementByXPath("/html/body/div[6]/div[2]/div[2]/div[2]/ul/div[3]/span[1]/a").Text”。
事實上,不僅僅是標(biāo)準(zhǔn)的有效性的信息以及標(biāo)準(zhǔn)號碼所對應(yīng)的全名,對于標(biāo)準(zhǔn)的發(fā)布日期和實施日期等信息,也可以采取類似的方法,獲取對應(yīng)元素的Xpath,利用driver.FindElementByXPath語句,返回對應(yīng)元素的各種屬性的值,通過程序自動化完成信息的識別,判斷和保存。
為了防止標(biāo)準(zhǔn)查新網(wǎng)站的資源耗盡,本程序設(shè)置了瀏覽器的查詢間隔,在實際使用過程中,不建議為了減少查新時間,縮短本文所述程序的設(shè)定值。由于此原因,本文所述的方法,理論上1分鐘最高可以實現(xiàn)15個標(biāo)準(zhǔn)的查新工作。也就是說,本例實際完成150個標(biāo)準(zhǔn)的查新工作,僅需要10余分鐘就可以完成。
2 ?結(jié) ?論
本文對食品行業(yè)檢驗檢測機構(gòu)標(biāo)準(zhǔn)查新工作,程序煩瑣,效率低下的問題,開發(fā)了一種采用Excel實現(xiàn)機構(gòu)標(biāo)準(zhǔn)的自動化查新工作的方法。本文所述方法,使用門檻較低,程序自動化程度較高,能夠及時準(zhǔn)確獲取標(biāo)準(zhǔn)的有效信息,利于操作者對信息進行分析和加工,提高標(biāo)準(zhǔn)查新的工作效率??梢院芎玫靥钛a食品行業(yè)檢驗檢測機構(gòu),利用計算機和互聯(lián)網(wǎng)實現(xiàn)標(biāo)準(zhǔn)自動查新的這一空白。
不僅是標(biāo)準(zhǔn)查新工作,對于食品檢驗檢測行業(yè)從業(yè)人員來說,除了基本的檢驗檢測業(yè)務(wù)之外,還存在大量的如管理體系運行、實驗室藥品管理、報告管理等繁雜瑣碎的工作。很多工作人工開展,不僅容易出錯,還需要層層審核,效率低下,如何高效準(zhǔn)確開展工作,是檢驗檢測機構(gòu)亟須解決的問題之一。檢驗檢測機構(gòu)利用好計算機和互聯(lián)網(wǎng)來處理這些工作,提高工作效率和質(zhì)量,將是一種較好的解決辦法。
參考文獻:
[1] 周建團.標(biāo)準(zhǔn)對檢驗檢測機構(gòu)的重要性 [J].發(fā)展,2017(6):61-62.
[2] 周潔,華添翼,朱潔,等.淺談檢驗檢測機構(gòu)方法變更中的方法驗證 [J].中國檢驗檢測,2020,28(6):89-90+88.
[3] 陳薇,桑彤,陸敏儀.標(biāo)準(zhǔn)查新和標(biāo)準(zhǔn)確認體系的建立對檢驗/檢測機構(gòu)的重要性[J].中國藥事,2015,29(4):369-373.
[4] 李駿,張鴿,紀(jì)海婷,等.Python在標(biāo)準(zhǔn)查新中的應(yīng)用 [J].科技創(chuàng)新與應(yīng)用,2020(12):184-186.
[5] 杜菁,武文芳,周震.?dāng)?shù)據(jù)庫技術(shù)與應(yīng)用新概念教程:第2版 [M].北京:中國鐵道出版社,2016.
[6] 王旭麗.基于Selenium的自動化程序設(shè)計與實現(xiàn) [J].現(xiàn)代信息科技,2022,6(22):12-15+21.
作者簡介:王群(1992—),男,漢族,湖北竹山人,碩士研究生,研究方向:食品安全;通訊作者:陳艷芳(1980—),女,漢族,湖北竹山人,工程師,本科,研究方向:食品安全。