寫在前面
幾乎每年的8月份阿纤,都是科研大神們比較關(guān)注的日子登舞,因為自己年初苦心經(jīng)營的基金申請結(jié)果即將揭曉且蓬。那么究竟花落誰家会傲,其實早有定數(shù)(當(dāng)然要建立在通宵達(dá)旦的碼字以及契合審稿人的口味,也就是說要把我當(dāng)今的研究趨勢)纳像。當(dāng)然荆烈,不管各位老師以及科研工作者有沒有申請上,此時竟趾,我們更應(yīng)該care那些申請上的牛人都在做些什么憔购,博采眾長,海納百川潭兽。如果你想知道倦始,那么請跟我往下走。
目的
雖然國家自然科學(xué)基金網(wǎng)以及科學(xué)網(wǎng)等相應(yīng)網(wǎng)站都可以查詢相關(guān)的課題名稱山卦,但是如何更加快速且自如的篩選出自己想要的領(lǐng)域并且能夠下載下來慢慢琢磨體會鞋邑。這里我將采用R語言并結(jié)合科學(xué)網(wǎng)的基金頻道诵次,如下圖所示:
- 當(dāng)我用“腸道菌群”作為關(guān)鍵詞去進(jìn)行搜索后,結(jié)果共得到1098項結(jié)果
- 當(dāng)點擊第一頁結(jié)果枚碗,我們發(fā)現(xiàn)網(wǎng)址為“http://fund.sciencenet.cn/search?name=%E8%82%A0%E9%81%93%E8%8F%8C%E7%BE%A4&yearStart=2019&submit=list&page=1”逾一,當(dāng)點擊第二頁結(jié)果時候,我們發(fā)現(xiàn)網(wǎng)址變?yōu)椤?a target="_blank">http://fund.sciencenet.cn/search?name=%E8%82%A0%E9%81%93%E8%8F%8C%E7%BE%A4&yearStart=2019&submit=list&page=2”肮雨,我們發(fā)現(xiàn)只有page=后面的數(shù)字發(fā)生了變化遵堵,那么這個用R語言取爬取每一頁的內(nèi)容就比較方便的了。
R語言爬取基金標(biāo)題等內(nèi)容
這里主要采用的是R包
rvest
(主要用于爬取內(nèi)容)以及stringr
(主要對爬取后的內(nèi)容進(jìn)行相應(yīng)的整理)怨规。對于網(wǎng)頁爬蟲陌宿,則需要對網(wǎng)頁的html格式有所了解(話雖如此,我也是一個小白波丰,很白的那種)壳坪。當(dāng)然只要能實現(xiàn)我的目的就行了(建議還是可以去查找相關(guān)的資料學(xué)習(xí)一下,畢竟技多不壓身嘛)掰烟。言歸正傳爽蝴,我用的Chrome瀏覽器,所以我把鼠標(biāo)放在相應(yīng)的條目上纫骑,比如“1.基于腸道菌群介導(dǎo)的蒼術(shù)炮制機理研究”蝎亚,鼠標(biāo)右鍵點擊檢查,就會出現(xiàn)如下的網(wǎng)頁html形式:
- 接下來我們想獲得基金負(fù)責(zé)人等相關(guān)消息先馆,那么如下圖所示:
- 那么究竟在R里面怎么操作呢发框,代碼如下:
rm(list = ls())
# 加載相應(yīng)的包
library(rvest)
library(stringr)
site <- 'http://fund.sciencenet.cn/search?name=%E8%82%A0%E9%81%93%E8%8F%8C%E7%BE%A4&yearStart=2019&submit=list&page='
table2 <- NULL
# 下面寫一個循環(huán),為了時間關(guān)系磨隘,我只循環(huán)到第30頁
for(page in 1:30){
url0 <- paste(site, page, sep = "")
web <- read_html(url0)
News <- web %>% html_nodes('p.t') # 標(biāo)題內(nèi)容
#---獲得基金標(biāo)題---
Title <- News %>% html_text() # 標(biāo)題內(nèi)容解析
Title <- gsub('\n','',Title) # 去除換行符
Title <- gsub('\\s+',' ',Title) # 去除空格
Title
#---獲得負(fù)責(zé)人信息---
Information <- web %>% html_nodes('div.d') %>% html_text() # 負(fù)責(zé)人等相關(guān)消息解析
Information <- gsub('\n', ' ', Information)
Information <- gsub('\\s+', ' ', Information)
Information
#Author <- web %>% html_nodes('div.d .author') %>% html_text()
#---獲得申請單位---
# Department <- web %>% html_nodes('.ico , #resultLst a') %>% html_text()
# Department <- gsub('\n',' ',Department) # 去除換行符
# Department <- gsub('\\s+',' ',Department) # 去除空格
#---保存為csv文件---
#組合成數(shù)據(jù)框
# dat <- data.frame(Title,Time,link1)
dat <- cbind(Title, Information)
table2 <- as.data.frame(rbind(table2, dat))
write.csv(table2,file = 'NSFC2019.csv',row.names = FALSE)
}
# 對表格進(jìn)行處理
df <- cbind(table2$Title,data.frame(do.call(rbind, strsplit(as.character(table2$Information), split = " "))))
df$X1 <- NULL # 將空值的那一列刪除
# 給每一列附上列名
names(df) <- c("基金名稱","負(fù)責(zé)人","申請單位","研究類型","項目批準(zhǔn)號",
"批準(zhǔn)年度","金額","關(guān)鍵詞")
write.csv(df,file = 'NSFC2019_revised.csv',row.names = F)
- 最終得到的結(jié)果如下表所示:
寫在后面
古人有云:知己知彼缤底,方能百戰(zhàn)不殆顾患。尤其是對剛進(jìn)高校的青椒們
番捂,通過這種方法可以使你在了解領(lǐng)域內(nèi)的研究方向,同時江解,也能拓寬自己的視野设预。集百家之智慧,鍛造灑家之國基犁河。
信息來源
[1] 科學(xué)網(wǎng)基金頻道:http://fund.sciencenet.cn/