因為課程專案需要用到知網爬蟲,在GitHub上搜尋後發現CyrusRenty的CNKI-download倉庫,但是clone下來後發現不太能用,因此對其進行了修改,除下載文獻以及驗證碼功能外,其餘功能親測可用。
因為僅接入校園網不能使得知網識別出學校(需要透過另一個學校VPN才行),下載文獻功能我無法使用o(╥﹏╥)o,也就沒能修改。驗證碼我也沒有遇到,在爬取每個頁面時盡量保證足夠的間隔時間應該可以規避該問題。
PS:對於NoneType等問題,我粗暴的try catch忽略了,因此如果您看到爬取完成後的Excel中某行有的字段沒有數據,當做噪聲刪掉就好~如果您迫切需要所有完整字段,提issue我看看能不能幫到
PS:有時運行爬蟲時可能會報以下錯誤:
這種情況,請關閉全域代理的VPN,並在瀏覽器中輸入中國知網位址查看能夠正常進入,之後反覆嘗試執行程式即可。
關於本專案如果您有問題,可以直接提issue,希望我能在力所能及的情況下幫助您!如果您有更好的代碼合入,肥腸歡迎提PR!
接下來的內容取自原作者,向原作者致敬∠(°ゝ°)
專案是基於Python3 實現的爬取知網資料的爬蟲,可根據知網高級檢索進行搜索,提供文獻基本資訊、文獻下載、文獻摘要等詳細資訊爬取功能。
實現過程可以查看我的博客
程式運行如下:
詳細資料excel表格如下:
下載caj如下:
透過發送解析包形式抓取數據,相比於使用selenium等方式效能稍高一些。
可使用知網高階檢索功能進行搜索,更有效率檢索文獻。
可依網路及知網反爬蟲狀況選擇性開啟詳細資訊抓取及下載caj文獻功能。
利用excel表格快速查看所需文獻摘要等信息,可根據excel提供下載連結選擇性下載,防止下載過快導致知網反爬。
在驗證碼處理部分使用了
tesserocr
,不過驗證效果目前不是很好,所以預設為開啟手動識別驗證碼。如果本機沒有安裝
tesseract
,可以先安裝這個,再執行pip install tesserocr
。或將CrackVerifyCode.py
檔第15、63、64行註解後再執行安裝指令。
pip install -r requirements.txt
# Config.ini 為專案設定檔# 0為關閉1為開啟isDownloadFile = 1 # 是否下載檔案isCrackCode=0 # 是否自動識別驗證碼isDetailPage=0 # 是否儲存文獻詳細資料到excelisDownLoadLink # 是否在excel中儲存下載鏈接stepWaitTime=5 # 每次下載及爬取詳情頁停頓時間
建議下載和爬取詳情頁面不要同時開啟,停頓時間不低於3秒。
python run-spider.py
爬蟲運行完畢後,所有資料將保存在data資料夾下,data資料夾每次重新執行程式會自動刪除舊的。
CNKI_download -- data 存放所有爬取数据 -- CAJs 存放所有下载的caj原文 -- xxxxxxx.caj -- xxxxxxx.caj -- Links.txt 所有爬取文献的下载链接 -- ReferenceList.txt 爬取文献简要信息 -- Reference_detail.xls 文献详细信息excel表
專案運作的前提是電腦可以透過ip存取知網並下載(一般學校都買了資料庫),快寫完時候發現目前還有一個跳轉接口,後續後增加公網存取。
如果出現「遠端主機拒絕了存取」可以適當加長每次停頓的時間。
如果在運行過一次後,再次運行前記得關閉data資料夾中所有文件,否則可能會因為無法刪除data資料夾而報錯。
如果只爬取資訊不下載的話,可能會在運行1000條文獻左右出現重複輸入驗證碼情況(即使輸入正確)。目前還不知道是什麼原因
完成進階檢索的其他未實現功能。
增加指定開始爬取頁面訊息,實現從上次錯誤再次爬取。
增加公網跳轉至知網接口,確保無法IP登入用戶也可使用本爬蟲。
建立代理池,基於公網跳轉實現代理ip訪問,減少知網封ip及輸入驗證碼次數。
撰寫程序實現及分析過程記錄。