用 matlab 爬取期刊影响因子
生活随笔
收集整理的這篇文章主要介紹了
用 matlab 爬取期刊影响因子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原址:https://zhuanlan.zhihu.com/p/25463570
用 matlab 爬取期刊影響因子
“爬蟲”這個詞的火爆多少跟 python 有些聯系,python 也當之無愧是最適合寫爬蟲程序的語言。但如果 matlab 用戶想要寫個爬蟲程序處理些簡單任務,大可不必再學 python,matlab同樣提供了獲取 web 數據的函數,也能實現簡單的爬蟲。我來分享一個最近遇到的簡單案例,說簡單卻也比中文互聯網上能搜到的案例都難些,如果您覺得閱讀本文有些吃力,不妨先讀這篇文章,[原][Matlab][01] 做一個簡單的爬蟲或下載器。任務是這樣的,老師給我一張 Excel 表格,列了 400 多本期刊的標題,然后給了我一個網址(最新SCI影響因子查詢及期刊投稿分析系統(2015-2016年) - LetPub),讓我從這網站獲取這些期刊的影響因子。這網站可以根據期刊名返回期刊信息,影響因子就在其中。考慮到鏈接可能失效,我給出一個截圖,如下。
寫這段程序需要用到 webread 函數、regexp 函數和正則表達式,相關內容請參閱用戶手冊。我們需要用 webread 函數向網站提交我們要檢索的期刊名,然后接收網站返回的網頁源代碼,最后從源代碼中利用正則表達式提取出影響因子。
提交期刊名時要在 webread 函數中指定網站上相關的變量名和變量值,變量值就是我們要檢索的期刊名。那變量名怎么查看呢,其實變量名就是輸入期刊名那個 input box 的 id,看圖。
如果你也用 Chrome 瀏覽器,那么右擊 input box,單擊檢查,就會彈出元素檢查窗口,就可以看到網頁的源碼了,我們得知 input box 的 id 是 searchname,也就是說我們通過 webread 函數提交的變量名是 searchname。這條語句如下。 url = 'http://www.letpub.com.cn/index.php?page=journalapp&view=search'; source_page = webread(url, 'searchname', char(journal_names(i)));這樣網頁源碼就儲存到了 source_page 變量中,接下來我們從 source_page 中提取出影響因子。類似地,我們觀察下包含影響因子的語句。
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">2.603</td>我們構造一個正則表達式,并且用 matlab 的 regexp 函數匹配。
pattern = '>[0-9]\.[0-9][0-9][0-9]<';IF = regexp(source_page, pattern, 'match');經過試驗,pattern 兩端的 >< 符號應該保留,不然會匹配到不想要的結果。
下面給出完整的包含輸入輸出、循環的代碼。需要注意的是,如果想運行這段代碼需要讀者自行構建輸入文件,并且修改代碼中輸入文件的路徑。另請注意,matlab 2015a 以前的版本沒有 webread 函數,因此該教程不適用。
%% 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);總結
以上是生活随笔為你收集整理的用 matlab 爬取期刊影响因子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每日一读
- 下一篇: matlab人脸追踪,求大神帮助我这个菜