王群 陳艷芳



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