我正在尝试从 python 中的 Europe PMC 注释 api 获取批量数据
I'm trying to get bulk data from Europe PMC annotations api in python
我的密码是
if name == 'main':
json_data=requests.get("https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds?articleIds=PMC%3A4771370§ion=Abstract&provider=Europe%20PMC&format=JSON").content
r=json.loads(json_data)
df = json_to_dataframe(r)
打印(df)
我唯一的问题是如何 运行 这对于多个 ID,就像我在一个文件中至少有数千个 ID。
请帮助我使用 python.
假设您知道 Python 并且可以将文件中的所有 ID 放入列表 article_ids
,您可以使用以下脚本:
URL = 'https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds'
article_ids = ['PMC:4771370']
for article_id in article_ids:
params = {
'articleIds': article_id,
'section': 'Abstract',
'provider': 'Europe PMC',
'format': 'JSON'
}
json_data = requests.get(URL, params=params).content
r = json.loads(json_data)
df = json_to_dataframe(r)
print(df)
分析共享 URL 并阅读 URL Encodings article 后,
我观察到 annotationByArticleIDs 的每个值都具有 SOURCE:EXTERNAL_ID 格式的格式。
测试 1:
如果你点击 url:
https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds?articleIds=PMC
输出为:
它必须包含格式为 SOURCE:EXTERNAL_ID 的值,其中 SOURCE 必须具有以下值之一 [PMC、MED、PAT、AGR、CBA、HIR、CTX、ETH、CIT、PPR、NBK] 并且 EXTERNAL_ID 必须当 SOURCE=PMC
时是一个数字
- 以上输出显示了可能的来源列表
- 每个来源由 EXTERNAL_ID 使用冒号分隔
- 冒号在URL编码文章
中由%3A表示
- 为了将一对值与另一对值分开,您可以使用逗号运算符
- 逗号在同一篇URL编码文章中使用%2C表示
答案:因此,要获取多篇文章,您可以生成格式为 SOURCE1:EXTERNAL_ID1、SOURCE2:EXTERNAL_ID2 .... SOURCE3:EXTERNAL_ID3 的文章 ID 字符串,然后追加到主url
一些限制:
- 最大URL 长度可以是 2048 个字符
- 根据可能的 ID,您将能够获取大约 150 到 200 篇文章
- 您可以遍历一批 150 个,然后获取所需的信息
我的密码是
if name == 'main': json_data=requests.get("https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds?articleIds=PMC%3A4771370§ion=Abstract&provider=Europe%20PMC&format=JSON").content r=json.loads(json_data) df = json_to_dataframe(r) 打印(df)
我唯一的问题是如何 运行 这对于多个 ID,就像我在一个文件中至少有数千个 ID。 请帮助我使用 python.
假设您知道 Python 并且可以将文件中的所有 ID 放入列表 article_ids
,您可以使用以下脚本:
URL = 'https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds'
article_ids = ['PMC:4771370']
for article_id in article_ids:
params = {
'articleIds': article_id,
'section': 'Abstract',
'provider': 'Europe PMC',
'format': 'JSON'
}
json_data = requests.get(URL, params=params).content
r = json.loads(json_data)
df = json_to_dataframe(r)
print(df)
分析共享 URL 并阅读 URL Encodings article 后, 我观察到 annotationByArticleIDs 的每个值都具有 SOURCE:EXTERNAL_ID 格式的格式。
测试 1: 如果你点击 url:
https://www.ebi.ac.uk/europepmc/annotations_api/annotationsByArticleIds?articleIds=PMC
输出为: 它必须包含格式为 SOURCE:EXTERNAL_ID 的值,其中 SOURCE 必须具有以下值之一 [PMC、MED、PAT、AGR、CBA、HIR、CTX、ETH、CIT、PPR、NBK] 并且 EXTERNAL_ID 必须当 SOURCE=PMC
时是一个数字- 以上输出显示了可能的来源列表
- 每个来源由 EXTERNAL_ID 使用冒号分隔
- 冒号在URL编码文章 中由%3A表示
- 为了将一对值与另一对值分开,您可以使用逗号运算符
- 逗号在同一篇URL编码文章中使用%2C表示
答案:因此,要获取多篇文章,您可以生成格式为 SOURCE1:EXTERNAL_ID1、SOURCE2:EXTERNAL_ID2 .... SOURCE3:EXTERNAL_ID3 的文章 ID 字符串,然后追加到主url
一些限制:
- 最大URL 长度可以是 2048 个字符
- 根据可能的 ID,您将能够获取大约 150 到 200 篇文章
- 您可以遍历一批 150 个,然后获取所需的信息