科学网引文数据导出与分析

pywos的Python项目详细描述


#wos statistics

python库,用于从科学网收集数据,并根据引文统计的各种要求导出摘要。爬行部分使用aiohttp实现,以获得更好的速度。

从pywos.analysis import papers中构造搜索
导入异步

获取数据
qd=构造搜索(ai="D-3202-2011",py="2014-2018")构造纸张查询
wq=wosquery(querydict=qd)基于查询创建爬网程序对象
loop=asyncio.get_event_Loop()
task=asyncio.sure_future(wq.main(path="data.json"))使用对象的main函数下载纸张元数据并保存它们在路径
循环中,运行"直到完成(任务)",这里是

"2018"])以熊猫数据框的形式生成引文摘要
```

您应该为爬网类提供查询dict。` value(select[n])`对应第n个查询条件,例如author's name的'au',authors identifier的'ai',publication year range的'py',等等。'value(input[n])对应第n个查询值,例如author的名称或2012-2018年范围。如果存在多个条件,则还应添加"value(bool_u[m][n])",这些值包括"and"、"or"、"not",指示如何组合不同的搜索条件。此外,"fieldcount"应更新为查询条件的数目。合法的查询类似于{fieldcount':2,'value(input1)''d-1234-5678,'value(select1)''ai,'value(input2)''2014-2018,'value(select2)''py,'value(bool-1-u 2)'和'}'。提供了一个快速的函数,可以方便地为查询和连接查询构造这样的查询字典。

``python
来自pywos。crawler import construct\u search
construct\u search(ai="d-1234-5678",py="2018-2018")

'值(bool_u 1_u 2)''和',
'值(input1)''d-1234-5678',
'值(input2)''2018-2018',
'值(select1)''ai',
'值(select2)''py'}
`````

我们应该通过为所有http连接提供头的查询dict和dict来初始化爬网对象(可选,头有默认的用户代理)。

``python
from pywos.crawler import wosquery
wq=wosquery(querydict={value(input1)'',…},headers={user-agent':'blah-blah'})
```


wosquery.main(path=)调用数据收集任务。参数都是可选的,除了保存输出数据的路径名"path"。` citedcheck是一个bool,如果设置为true,则还会收集查询论文的所有引文。这是对引文进行详细分析的基础,如按年引文和其他引文。否则,"citedcheck"的默认值为false,在这种情况下,只能获取每个查询论文的总引文数。` limit`选项提供http连接池中的最大连接数。默认数字是20。较大的数字意味着更快的速度,但也意味着由于科学网络的限制,连接失败的风险更高。` limit=30'测试成功,没有连接失败,这样的速度足以在1分钟左右处理1000篇论文。如果查询任务太大,更好的做法是打开参数"savebyeach=true",这样查询中的每一张纸都会在下载后立即保存。因此,当遇到连接失败时,我们可以在不重新获取所有数据的情况下恢复任务。这是确定的通过main函数的'masklist'参数。如果提供了'masklist',则对于此列表中的所有整数,将省略相应的纸张,以避免重复工作。总之,对于一个大型任务,我们有以下参数。

``python
import asyncio
task=asyncio.确保未来(wq.main(path="prefix",citedcheck=true,savebyeach=true,limit=30))
```

请参阅下面的内容。

`` python
loop=asyncio.get_event_loop()


尝试:
loop.run_直到完成(task)


loop.run_forever()

finally:
loop.close()
````

打开日志模块。

``python
import logging
logger=logging.getlogger('pywos')
logger.setlevel(logging.debug)
ch=logging.streamhandler()
ch.setlevel(logging.debug)
logger.addhandler(ch)
```

是为分析论文的元数据而设计的。要初始化对象,请提供我们使用"wosquery.main(path)"保存的元数据的路径。还可以提供路径列表,以便导入这些json的所有数据。此外,还可以打开"merge=true",这样所有前缀为"path-"的文件都将自动导入,这特别适合使用"wosquery.main(path,savebyeach=true)"保存的数据文件。

邮件列表,年份)`。这些列表用于检查一个人是否是论文的第一作者/通信作者,并将"年"内的引文分别计算为最近的引文。如果要分析的数据来自"wosquery.main(citedcheck=true)",则可以启用"citedcheck=true"。这包括按年份(最近的引文)和作者(他人/自己的引文)对引文进行进一步分类。papers.show()的返回对象是pandas.dataframe,它可以很容易地转换成其他格式,包括csv、html、数据库中的表等等。

第一个",["mail@server",["2018"],citedcheck=true)
````






欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxrpc的Java eclipse WebService客户端   java编程方式在对象上写入名称   java Spring批处理:重试后跳过   java Android错误:错误:任务执行失败:应用程序:transformClassesWithDexForDebug'   带有清单文件nullPointerException的java Android元数据   spring Java Quartz调度作业停止运行   JavaMockito:如何在不调用实际方法的情况下,模拟带有参数和无效返回类型的静态方法?   java Tomcat连接池问题无法在关闭的连接上调用方法   java如何交换列表中的项目?   java如何停止线程并通过Toast在线程中正确显示文本?   java为什么连续写入OutputStream时偏移量0不会导致重复字节?   java我无法生成头文件   不兼容的返回类型错误java   修改值后键值对的java Jolt转换规范   java有自动更新Javadoc的工具吗?   java线程如何在ints自身实例类中共享变量   java继承一个非gwt模块   java Hibernate xml配置   使用netty4异步调用的java链接HTTP请求响应