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