抓取Web of Science經驗分享


 


受新加坡某科研機構委托,需要對國內469所高校,156個學科,25年內在 中的“引文報告”(如下圖示例)數據進行采集。檢索次數超180萬次。


該網站“需要登陸,並且會封賬號”,具有很強的典型性,特對本網站的采集經驗分享如下:

1. Web of Science必須登陸才能檢索,而且同一個賬號不能重復登陸,新的登陸會造成同一賬號老的會話失效。

2. 同一賬號的會話可以多線程使用,不會互相干擾檢索結果。

3. 賬號可能會被封,被封之后會提示“您帳戶的 "漫游" 功能已被禁用”(如下圖所示)。這個可能是Web of Science運維人工干預的,在我們的測試過程中,在相同的訪問頻率下,有的賬號只能搜索一兩萬次就被封了,而有的卻能搜索十幾萬次。在爬蟲中我們加入了自動切換賬號的功能,如果檢測到賬號被封則自動換用下一個賬號,不需要人工介入。我們總共進行了超過180次的搜索,總共使用了25個賬號。


4. 賬號每日訪問次數有限制,超過之后會提示“Server.IDLimit”之類錯誤(如下圖所示),如果檢測到賬號被封則自動換用下一個賬號,也不需要人工介入。


5. Cookie會不停的變動,每次查詢網站都會返回新的Cookie,不能持續的使用老的Cookie(有時效性),否則一段時間后會出現Timeout問題。我們一開始以為是代理的問題,后來經過多次驗證是因為Cookie變化了造成的,應該是觸發了WAF的防護策略。在我們的爬蟲中,如果連續檢測到多次出現Timeout問題,爬蟲自動重新登陸,即可恢復正常。

6. 每搜索滿200次系統會提示“記錄本次會話中所有檢索的“檢索歷史” 列表已滿”,造成檢索失敗。所以爬蟲中需要每隔200次清空一下搜索結果。

7. 會出現搜索失敗的情況,爬蟲需要進行重試直至成功。

8. 可以不使用代理IP,我們采集的過程中未發現該系統對IP訪問頻率有限制。

9. 為了不對系統造成過重負擔(Richard曾說過在采集別人網站的時候要心懷感恩),我們爬蟲僅使用了5個線程。進行180萬搜索,共耗時約20天。

10. 由於搜索需要大量時間,爬蟲使用了緩存機制,防止客戶修改字段后需要二次下載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM