英文取名

V1

2022/02/12阅读:38主题:默认主题

一行代码得到全学科的北大核心期刊投稿方式

一行代码得到全学科的北大核心期刊投稿方式

问题提出

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 折腾一个下午,满眼都是泪。
pip install pandas html5lib

  • 利用 pandas read_html 函数解析 url 中表格,最后用 to_csv 方法保存
import pandas as pd

dfs = pd.read_html(url,flavor='html5lib')

concat_df=pd.concat(dfs)

concat_df.to_csv('submit-table.csv',encoding='utf-8-sig',index=None, header=None)

  1. read_html 除了可以接受含有表格 table 的网址 url,可以接受含有 table 标签的字符串,还可以是本地文件。第二个参数 flavor 表示指定的解析器类型,默认是 lxml,这些都需要事先通过 pip 安装。返回的结果是DataFrame组成的list

  2. concat 函数中的第一个参数是必需的,表示参与拼接的 pandas 对象,如列表或字典,本代码中指的 dfs。第二个参数 axis 表示在哪些轴方向上(行或列)进行数据拼接,其值 0 是行,1 是列。由于本文实现的相同字段的表首尾相拼接,所有采用默认值 axis=0。当 axis = 1 的时候,concat 就是行对齐,表示横向表拼接。

  3. to_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”,回复"北大核心",获取所有投稿联系方式的数据。

分类:

后端

标签:

后端

作者介绍

英文取名
V1