用 matlab 爬取期刊影响因子
原址:https://zhuanlan.zhihu.com/p/25463570
用 matlab 爬取期刊影響因子
“爬蟲”這個詞的火爆多少跟 python 有些聯(lián)系,python 也當(dāng)之無愧是最適合寫爬蟲程序的語言。但如果 matlab 用戶想要寫個爬蟲程序處理些簡單任務(wù),大可不必再學(xué) python,matlab同樣提供了獲取 web 數(shù)據(jù)的函數(shù),也能實現(xiàn)簡單的爬蟲。我來分享一個最近遇到的簡單案例,說簡單卻也比中文互聯(lián)網(wǎng)上能搜到的案例都難些,如果您覺得閱讀本文有些吃力,不妨先讀這篇文章,[原][Matlab][01] 做一個簡單的爬蟲或下載器。任務(wù)是這樣的,老師給我一張 Excel 表格,列了 400 多本期刊的標(biāo)題,然后給了我一個網(wǎng)址(最新SCI影響因子查詢及期刊投稿分析系統(tǒng)(2015-2016年) - LetPub),讓我從這網(wǎng)站獲取這些期刊的影響因子。這網(wǎng)站可以根據(jù)期刊名返回期刊信息,影響因子就在其中。考慮到鏈接可能失效,我給出一個截圖,如下。
寫這段程序需要用到 webread 函數(shù)、regexp 函數(shù)和正則表達式,相關(guān)內(nèi)容請參閱用戶手冊。我們需要用 webread 函數(shù)向網(wǎng)站提交我們要檢索的期刊名,然后接收網(wǎng)站返回的網(wǎng)頁源代碼,最后從源代碼中利用正則表達式提取出影響因子。
提交期刊名時要在 webread 函數(shù)中指定網(wǎng)站上相關(guān)的變量名和變量值,變量值就是我們要檢索的期刊名。那變量名怎么查看呢,其實變量名就是輸入期刊名那個 input box 的 id,看圖。
如果你也用 Chrome 瀏覽器,那么右擊 input box,單擊檢查,就會彈出元素檢查窗口,就可以看到網(wǎng)頁的源碼了,我們得知 input box 的 id 是 searchname,也就是說我們通過 webread 函數(shù)提交的變量名是 searchname。這條語句如下。 url = 'http://www.letpub.com.cn/index.php?page=journalapp&view=search'; source_page = webread(url, 'searchname', char(journal_names(i)));這樣網(wǎng)頁源碼就儲存到了 source_page 變量中,接下來我們從 source_page 中提取出影響因子。類似地,我們觀察下包含影響因子的語句。
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">2.603</td>我們構(gòu)造一個正則表達式,并且用 matlab 的 regexp 函數(shù)匹配。
pattern = '>[0-9]\.[0-9][0-9][0-9]<';IF = regexp(source_page, pattern, 'match');經(jīng)過試驗,pattern 兩端的 >< 符號應(yīng)該保留,不然會匹配到不想要的結(jié)果。
下面給出完整的包含輸入輸出、循環(huán)的代碼。需要注意的是,如果想運行這段代碼需要讀者自行構(gòu)建輸入文件,并且修改代碼中輸入文件的路徑。另請注意,matlab 2015a 以前的版本沒有 webread 函數(shù),因此該教程不適用。
%% search impact factors from website for prof. Zhou.%% read journal names from the file provided by Zhou statics_filename = 'H:\impact factor\statics20170224.xlsx'; [~, journal_names, ~] = xlsread(statics_filename, 'A2:A475'); %% save the pages from the website and match the impact factors. n = size(journal_names); statics_result = cell(n); for i = 1:nurl = 'http://www.letpub.com.cn/index.php?page=journalapp&view=search'; % provided by Zhousource_page = webread(url, 'searchname', char(journal_names(i)));% match the impact factor from the source.pattern = '>[0-9]\.[0-9][0-9][0-9]<';IF = regexp(source_page, pattern, 'match');IF = strjoin(IF);statics_result(i) = {IF};disp(i);disp(IF); end %% write the statics file. xlswrite(statics_filename, statics, 2);總結(jié)
以上是生活随笔為你收集整理的用 matlab 爬取期刊影响因子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每日一读
- 下一篇: matlab根据url链接下载*.tar