前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | 用 Pyzotero 库操作 Zotero

Python | 用 Pyzotero 库操作 Zotero

作者头像
PyStaData
发布2021-01-06 11:39:35
2.2K1
发布2021-01-06 11:39:35
举报
文章被收录于专栏:PyStaDataPyStaData

0.准备工作

  1. 安装 pyzotero
代码语言:javascript
复制
!pip install pyzotero
  1. 前往 Zotero 官网[1] 获取 library_idapi_key

library_id:

api_key:

点击上图中的Create new private key,随后出现如下界面:

点击保存之后,会弹出窗口,即为api_key注意:api_key只会在这个界面出现一次,所以生成后要注意保存

1.用法介绍

1.1 实例对象

Pyzotero是将 Zotero API 进行封装的包,通过 PyZotero库可以获取 Zotero 的集合、条目和附件信息。

在开始前,要先准备三个参数(library_id, library_type, api_key),实例化一个对象。其中,library_idapi_key 的获取方式见准备工作;library_type可以选择user或者group,分别对应用户和群组。

代码语言:javascript
复制
from pyzotero import zotero

library_id = '20201230'
library_type = 'user' # 'user' or 'group'
api_key = 'ABCDEFG123'

# 实例对象
zot = zotero.Zotero(library_id, library_type, api_key)

zot.key_info() # 查看用户信息

输出结果为:

1.2 检索条目

代码语言:javascript
复制
zot.count_items() # 返回库/组中所有项的计数
zot.top(limit=10) # 返回顶级Zotero库项目
zot.trash() # 回收站
zot.publications() # 我的出版物

1.3 检索文件

代码语言:javascript
复制
Zotero.file(itemID[, search/request parameters])

上面的方法返回条目中的原始文件。可以通过如下复制文件:

代码语言:javascript
复制
with open('article.pdf', 'wb') as f:
  f.write(zot.file('BM8MZJBB'))

去重:

代码语言:javascript
复制
# write a file to the current working directory using the stored filename
zot.dump('BM8MZJBB')
# write the same file to a different path, with a new name
zot.dump('BM8MZJBB', 'article_1.pdf', '/home/beckett/pdfs')

1.3 检索集合

代码语言:javascript
复制
zot.collections()
zot.collections_top()

1.4 其他

代码语言:javascript
复制
zot.tags() # 检索标签
zot.item_versions() # 版本信息

除了这些基本的检索意外,Pyzotero库可以对集合、集合中条目和附件进行增删改,以及上传文件。官方文档[2]对用法进行了列举,感兴趣的朋友可以查阅学习。

下面,将通过一个综合的例子来展示Pyzotero库的使用。

2. 使用案例

2.1 项目用途

提取 2020 年《经济研究》的文章标题、作者和摘要。

2.2 项目思路

  • 将《经济研究》对应的内容添加到 Zotero 相应的集合;
  • 通过Pyzotero库对集合所有的文章进行遍历,提取信息存为列表;
  • 将列表存为DataFrame,导出为 Excel。

2.3 实现过程

2.3.1 建立集合

首先在知网选中相应的文献,选择RefWorks格式,再选择复制到剪贴板。操作如下:

复制文献记录后,在 Zotero 新建立的集合中选择从剪贴板导入。

文献导入集合中后,就可以使用 Pyzotero 库进行分析了。分析代码如下:

代码语言:javascript
复制
from pyzotero import zotero
import pandas as pd

library_id = '123456' # 填入自己的id
library_type = 'user' # 'user' or 'group'
api_key = 'XXXXX' #  填入自己的api_key

zot = zotero.Zotero(library_id, library_type, api_key)

colls = zot.collections() # 所有集合名称

# 选择待分析的集合
for coll in colls:
    if coll['data']['name'] == '经济研究':
        print(coll)


pyz = zot.collection_items('H3UGRKRB') # 待分析集合的key

# 存储标题、摘要和作者
tittle = []
abstract = []
author = []
for p in pyz:
    tittle.append(p['data']['title'])
    abstract.append(p['data']['abstractNote'])
    # 期刊中的公告无作者
    try:
        author.append(p['data']['creators'][0]['lastName'])
    except:
        author.append("")

# 写入DataFrame
paper_info = {
    "title": title,
    "author": author,
    "abstract": abstract
}
df = pd.DataFrame(paper_info)

# 导出为Excel
df.to_excel("经济研究_2020.xlsx")

2.4 实现结果

参考资料

[1]

Zotero 官网: https://www.zotero.org/settings/keys

[2]

官方文档: https://pyzotero.readthedocs.io/en/latest/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-30 21:03:05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.准备工作
  • 1.用法介绍
    • 1.1 实例对象
      • 1.2 检索条目
        • 1.3 检索文件
          • 1.3 检索集合
            • 1.4 其他
            • 2. 使用案例
              • 2.1 项目用途
                • 2.2 项目思路
                  • 2.3 实现过程
                    • 2.3.1 建立集合
                  • 2.4 实现结果
                    • 参考资料
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档