一行代码得到全学科的北大核心期刊投稿方式
目錄
- 問題提出
- 設(shè)計(jì)思路
- 具體實(shí)現(xiàn)
- 結(jié)論
問題提出
2022 年已過了六分之一,馬上要上班投入新的戰(zhàn)斗,好久沒寫代碼,手有些癢,準(zhǔn)備提前熱熱身,又正好瞄到一篇微信公眾號(hào)文章,里面匯總了所有學(xué)科的北大核心期刊投稿方式,有郵箱,投稿系統(tǒng)的網(wǎng)址,還有紙質(zhì)稿件的接收地址。考慮先在本地保存成 Excel 表格后,分析下哪些雜志社的信息化程度較高或更重成本而輕效率,另外說不定哪天自己想投文章了,也方便查閱比較。
放上源信息和本地?cái)?shù)據(jù)文件截圖做對(duì)比,對(duì)代碼和原理不感興趣的同學(xué),直接跳到文末,關(guān)注微信公眾號(hào)“樂享 Python”,回復(fù)"北大核心",獲取所有投稿聯(lián)系方式的數(shù)據(jù)。
設(shè)計(jì)思路
簡(jiǎn)單說,常規(guī)的思路分為三步:請(qǐng)求,解析,保存。主要用到Python中的爬蟲知識(shí)和豐富的第三方庫。有關(guān)爬蟲的學(xué)習(xí)資源,強(qiáng)烈推薦一個(gè)在線電子書 https://python3webspider.cuiqingcai.com/
- 請(qǐng)求庫通常有requests ,Selenium ,PhantomJS 等。
- 解析庫有l(wèi)xml ,html5lib,Beautiful Soup,pyquery 等。本文選擇html5lib,中文容錯(cuò)能力強(qiáng)。
- 保存方式有txt,csv,xlsx,各種關(guān)系數(shù)據(jù)庫等。本文選擇輕小簡(jiǎn)便的csv文件存儲(chǔ)。
既然上面講的是常規(guī)爬蟲設(shè)計(jì)思路,本文又要一句代碼實(shí)現(xiàn),所以上面介紹的工具大都不用,只用到html5lib和Pandas。Pandas 是 Python 的核心數(shù)據(jù)分析支持庫,提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),旨在簡(jiǎn)單、直觀地處理關(guān)系型、標(biāo)記型數(shù)據(jù)。
具體實(shí)現(xiàn)
- 安裝第三方庫(html5lib和Pandas)。
直接用上pip,現(xiàn)在想起十年前初學(xué)Python時(shí),為安裝一個(gè)簡(jiǎn)單的package,用easy_install折騰一個(gè)下午,滿眼都是淚。
- 利用pandas的 read_html 函數(shù)解析url中表格,更全的read_html用法請(qǐng)參考https://mp.weixin.qq.com/s/eJl97IzSkao7CaQu4oEsqg,最后用to_csv方法保存。
read_html(url, flavor=“html5lib”)
- 參數(shù)一:url,除了可以接受含有表格table的網(wǎng)址url,可以接受含有table標(biāo)簽的字符串,還可以是本地文件。
- 參數(shù)二:flavor,表示指定的解析器類型,默認(rèn)是lxml,這些都需要事先通過pip命令安裝。返回的結(jié)果是DataFrame組成的list
concat函數(shù)
- 參數(shù)一:args是必需的,表示參與拼接的pandas對(duì)象,如列表或字典,本代碼中指的是dfs。
- 參數(shù)二:axis表示在哪些軸方向上(行或列)進(jìn)行數(shù)據(jù)拼接,其值0是行,1是列。由于本文實(shí)現(xiàn)相同字段的表首尾相拼接,所以采用默認(rèn)值axis=0。當(dāng)axis = 1的時(shí)候,concat就是行對(duì)齊,表示橫向表拼接。
to_csv(“submit-table.csv”, encoding=“utf-8-sig”, index=None, header=None)
- 參數(shù)一:"submit-table.csv"表示將Dataframe對(duì)象保存為csv的文件名。
- 參數(shù)二:encoding=‘utf-8-sig’,表示指定文件的編碼,為了防止用Office Excel打開含中文字符的csv時(shí)出現(xiàn)亂碼,這里指定utf-8-sig表示帶有簽名的 utf-8(UTF-8 with BOM)。
- 參數(shù)三:index=None 不需要csv中每行的第一列中出現(xiàn)索引數(shù)字列。
- 參數(shù)四:設(shè)置header=None,因?yàn)楸砀裰幸押兄形谋眍^(學(xué)科,期刊刊名,投稿地址),所以不需出現(xiàn)起始0的數(shù)字表頭。
為了便于閱讀,嚴(yán)格說用了四行代碼。一行代碼應(yīng)該是這個(gè)樣子。
pd.concat(pd.read_html(url, flavor="html5lib")).to_csv("submit-table.csv", encoding="utf-8-sig", index=None, header=None )結(jié)論
贈(zèng)人玫瑰手有余香。
后期再分享一篇匯總了所有期刊的版面費(fèi)和審稿費(fèi)信息,其原理都一樣,只是換個(gè)網(wǎng)址url即可。關(guān)注公眾號(hào) “樂享Python”,定期分享教育資源干貨。
總結(jié)
以上是生活随笔為你收集整理的一行代码得到全学科的北大核心期刊投稿方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 由七芒星引出来的——关于142857
- 下一篇: 如何发表一篇核心期刊论文