首页 > 解决方案 > BioPython:将 JSON 键值平展为 Pandas DataFrame

问题描述

我需要一个爬虫模块,它可以从 PUBMED 收集几个给定关键字(例如 Eye)和预先指定的时间窗口(例如 01/01/2015 – 08/06/2018)的论文标题、作者列表、发表时间和摘要),并且检索到的数据应保存为 JSON 格式。我能够抓取网站并将数据存储在 JSON 文件中。

但是,我无法展平嵌套的键值来创建数据框,列标题为“论文标题、作者列表、出版时间和摘要”。

请帮忙。

到目前为止的努力如下:

import Bio
from Bio import Entrez
import json
import requests 
import pandas as pd
from pprint import pprint 
from pandas.io.json import json_normalize  
import pandas as pd

def search(query):
    Entrez.email = 'my.email@gmail.com'
    handle = Entrez.esearch(db='pubmed', sort='relevance', retmax='100', retmode='xml', term=query)
    results = Entrez.read(handle)
    return results

def fetch_details(id_list):
    ids = ','.join(id_list)
    Entrez.email = 'my.email@gmail.com'
    handle = Entrez.efetch(db='pubmed', retmode='xml', id=ids)
    results = Entrez.read(handle)
    return results

if __name__ == '__main__':
    results = search('Eye')
    id_list = results['IdList']
    papers = fetch_details(id_list)
    for i, paper in enumerate(papers['PubmedArticle']): 
        print("%d) %s" % (i+1, paper['MedlineCitation']['Article']['ArticleTitle']))

标签: pythonjsonpandasbiopython

解决方案


推荐阅读