上篇對“國家標准全文公開系統”的國標進行抓取,本篇對食品領域的標准公開系統“食品安全國家標准數據檢索平台”進行抓取。
平台地址:http://bz.cfsa.net.cn/db

一、標准列表
第一步還是去獲取標准列表,通過高級搜索,輸入空查詢條件,則查詢出全部的標准記錄。


這時候可以看到,列表頁的URL仍然是http://bz.cfsa.net.cn/db。
不同於“國家標准全文公開系統”,“食品安全國家標准數據檢索平台”的請求多數是POST,即用戶的多數操作是POST不同參數到http://bz.cfsa.net.cn/db,服務根據POST的參數返回相應的頁面。
那么要獲取標准列表,則要POST特定參數到http://bz.cfsa.net.cn/db。POST哪些參數?可以通過查看源碼,分析JS代碼了解到。
更簡單、准確的方式是,通過瀏覽器(火狐、谷歌、IE都可)的Web調試工具查看其POST提交的參數,例如查詢全部標准的POST數據如下:

二、標准詳細信息
點擊標准名稱超鏈接,將打開標准詳細信息頁,頁面URL為http://bz.cfsa.net.cn/staticPages/002D3B53-DE13-42C1-B099-C57EC501138A.html。
可見詳細信息頁通過GET請求獲得,需要從列表頁中解析到標准的GUID,然后GET相應的頁面即可。解析GUID仍然使用正則表達式即可。
當然,該站點也可以通過POST請求獲取到標准詳細信息頁,因為其源代碼如下:
<a href="javascript:void(0);" onclick="goto('3B34B8D6-7164-4419-B308-6AF683E8B606','2')">食品安全國家標准 食品微生物學檢驗培養基和試劑的質量<font color='red'>要</font>求(GB 4789.28-2013)</a>

標准詳細信息的抓取,仍然通過HTML解析組件進行解析。

三、標准文件下載
下載標准PDF文件,點擊“下載”鏈接獲取文件。查看其源代碼如下:
onclick="load('588072C8-F771-4F66-9B33-3BA4AF7C4540');

可知下載PDF文件時,POST請求到該URL:http://bz.cfsa.net.cn/cfsa_aiguo。
文件的GUID值和標准的GUID值不同,但仍然可以從頁面中使用正則表達式解析出來。
至此,該站點的標准可以抓取到,相比“國家標准全文公開系統”,該站點標准爬取時,只需要修改GET請求為POST請求即可。
