还在为帮导师纯体力打工而烦恼吗?还在为统计论文分区而浪费时间吗?面对数以千计的论文记录和期刊列表,还在寻找浏览器扩展一条条搜索分区信息吗?
计算机的学生要有计算机学生解决问题的方式。说得好,我们要来点替代体力劳动的东西。
期刊分区数据库
想要自动化处理和分类期刊,一个期刊的分区数据库是不可缺少的。
本想研究下一些所谓的学术用浏览器扩展,找到可以查询期刊分区的API接口,后来想想不如找一找是否有现成的数据库。
这不,可以直接找到:hitfyd/ShowJCR。打开项目目录中的中科院分区表及JCR原始数据文件
文件夹,找到jcr.db
文件,这就是我们需要的数据库了。
具体数据库内容可参见仓库说明,值得注意的是,JCR/SCI分区信息更新于每年6月,而中科院分区信息更新于每年年底,CCF……不太清楚,反正就那回事。
数据库中有以下表(截至2024年5月):
1 2 3 4 5 6 7 8 9 10 11 12 13
| jcr.db - JCR2022 - JCR2021 - JCR2020 - GJQKYJMD2024 - GJQKYJMD2023 - GJQKYJMD2021 - GJQKYJMD2020 - CCF2022 - CCFT2022 - FQBJCR2023 - FQBJCR2022 - FQBJCR2021
|
或许有用的SQL示例
运行以下SQL代码:
1 2 3
| SELECT jcr.Journal, jcr.ISSN, jcr."IF(2022)" AS IFactor, jcr.IFQuartile FROM JCR2022 jcr WHERE jcr.Journal = 'nature' COLLATE NOCASE
|
结果:
1
| NATURE|0028-0836|64.8|Q1
|
或许有用的Python脚本示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import sqlite3
JCR_DB = "jcr.db"
class JCRQuerier(): def __init__(self, jcr_db: str) -> None: self.con = sqlite3.connect(jcr_db) self.con.execute('PRAGMA foreign_keys = ON') def get_journal_jcr_rank(self, journal_name: str): cursor = self.con.cursor() query = """ SELECT jcr.Journal, jcr.ISSN, jcr."IF(2022)" AS Ifactor, jcr.IFQuartile FROM JCR2022 jcr WHERE jcr.Journal = ? COLLATE NOCASE """ cursor.execute(query, (journal_name,)) res = cursor.fetchall() cursor.close() return res def get_journal_cas_rank(self, journal_name: str): cursor = self.con.cursor() query = """ SELECT cas.Journal, cas.大类分区 AS CASBig, cas.小类1分区 CASSmall1 FROM FQBJCR2023 cas WHERE cas.Journal = ? COLLATE NOCASE """ cursor.execute(query, (journal_name,)) res = cursor.fetchall() cursor.close() return res def get_journal_rank_union(self, journal_name: str): cursor = self.con.cursor() query = """ SELECT jcr.Journal, jcr.ISSN, jcr."IF(2022)" AS Ifactor, jcr.IFQuartile, cas.大类分区 AS CASBig, cas.小类1分区 CASSmall1 FROM JCR2022 jcr, FQBJCR2023 cas WHERE jcr.Journal = cas.Journal AND jcr.Journal = ? COLLATE NOCASE """ cursor.execute(query, (journal_name,)) res = cursor.fetchall() cursor.close() return res querier = JCRQuerier(JCR_DB) journal_name = "nature" rank = querier.get_journal_jcr_rank(journal_name) print(rank)
|