CnkiSpider是一个高效爬取知网文章信息的包
Project description
CnkiSpider使用指南(by@zemengchuan)
GitHub链接:https://github.com/zemengchuan/CnkiSpider
用途:
CnkiSpider可以通过简单的代码实现高效的知网文章信息爬取,主要爬取的内容包括:【标题、作者、发表时间、来源、链接】,并将爬取的结果保存为CSV格式。经测试,某作者在知网上的821篇文章只需要2-4s即可全部获取(不同设备及网络情况可能会出现差异),效率相对而言比较高。
CnkiSpider的高效来自于采用了多线程的方式进行爬取。目前仅实现了通过作者的方式查询,将来还会持续更新通过其他的方式(如主题、篇关摘、关键词等)方式,还计划实现相关的图表分析功能,现在先将实现的部分上传供大家使用
优点
使用简单,效率较高
缺点
- 不够灵活,必须有作者的姓名、代码和第一机构才可以搜索,不能仅通过作者名字搜索(CnkiSpider设有专门的函数帮助确认作者的代码和第一机构,详情见使用方式)
- 目前仅支持中文搜索,英语搜索可能会出现问题
- 目前仅支持通过作者搜索
安装方式
pip install CnkiSpider
使用方式
AuthorSpider
Cnki目前的功能仅有通过作者搜索,所以只有AuthorSpider这一个类。使用方法如下:
-
AuthorSpider(author_name,author_code,institution)
只有三个参数,其中author_name是必填的。如果知道作者的代码和第一机构,那么后续的过程就会非常简单。 -
如果知道需要爬取的作者的姓名、代码和第一机构,那么可以按照如下操作获取结果:
from CnkiSpider import AuthorSpider
"""
将author_name,author_code,institution三个参数传入AuthorSpider中,
再使用get_all_article()方法即可快速获取该作者的所有文章
文件保存在当前目录下,文件名为result
"""
name = '钟南山'
code = '000039361479'
inst = '中国工程院'
cas = AuthorSpider(author_name=name,author_code=code,institution=inst)
cas.get_all_article()
"""
输出结果:
一共有文章820篇
共需要爬取17页
====================================================================================================
正在爬取第2页……
正在爬取第3页……
正在爬取第4页……
正在爬取第5页……
正在爬取第6页……
正在爬取第7页……
正在爬取第8页……
正在爬取第9页……
正在爬取第10页……
正在爬取第11页……
正在爬取第12页……
正在爬取第13页……
正在爬取第14页……
正在爬取第15页……
正在爬取第16页……
正在爬取第17页……
第17页爬取成功!第17页有20条数据
第2页爬取成功!第2页有50条数据
第5页爬取成功!第5页有50条数据
第10页爬取成功!第10页有50条数据
第13页爬取成功!第13页有50条数据
第14页爬取成功!第14页有50条数据
第7页爬取成功!第7页有50条数据
第16页爬取成功!第16页有50条数据
第9页爬取成功!第9页有50条数据
第4页爬取成功!第4页有50条数据
第6页爬取成功!第6页有50条数据
第12页爬取成功!第12页有50条数据
第11页爬取成功!第11页有50条数据
第8页爬取成功!第8页有50条数据
第3页爬取成功!第3页有50条数据
第15页爬取成功!第15页有50条数据
====================================================================================================
爬取完成,已将结果保存至./钟南山-中国工程院-000039361479/
"""
- 如果仅知道姓名,那么可以按照如下操作获取结果:
from CnkiSpider import AuthorSpider
"""
如果只知道姓名,那么就需要author_recommend()函数的帮助
运行按照提示确定作者的代码和第一机构即可
最后使用get_all_recomment()方法获取所有文章
如果get_all_recoment()获取的作者列表有误,可以输入re再次获取
文件保存在当前目录下
"""
cas = AuthorSpider('钟南山')
cas.author_recommend()
cas.get_all_article()
"""
author_recommend()会返回作者的姓名、代码和第一机构
如果有需要获取相关参数(姓名、代码、第一机构),可以按照如下的操作进行
"""
# cas = AuthorSpider('钟南山')
# print(cas.name,cas.code,cas.institution)
#author_name, author_code, institution = cas.author_recommend()
# print(cas.name,cas.code,cas.institution
"""
输出结果为:
作者 机构
0 钟南山 中国工程院
1 钟南山
2 钟南山
3 钟南山 南昌大学第一附属医院
4 钟南山 共信医药科技股份有限公司;
5 钟南山 南风窗杂志社
6 钟南山 扎木县人民医院
7 钟南山
8 钟南山
9 钟南山 上海明品医学数据科技有限公司
请选择需要查询的作者序号(输入exit退出):0
一共有文章820篇
共需要爬取17页
====================================================================================================
正在爬取第2页……
正在爬取第3页……
正在爬取第4页……
正在爬取第5页……正在爬取第6页……
正在爬取第7页……
正在爬取第8页……
正在爬取第9页……
正在爬取第10页……
正在爬取第11页……
正在爬取第12页……
正在爬取第13页……
正在爬取第14页……
正在爬取第15页……
正在爬取第16页……
正在爬取第17页……
第17页爬取成功!第17页有20条数据
第14页爬取成功!第14页有50条数据
第4页爬取成功!第4页有50条数据
第10页爬取成功!第10页有50条数据
第12页爬取成功!第12页有50条数据
第3页爬取成功!第3页有50条数据
第13页爬取成功!第13页有50条数据
第16页爬取成功!第16页有50条数据
第2页爬取成功!第2页有50条数据
第5页爬取成功!第5页有50条数据
第7页爬取成功!第7页有50条数据
第15页爬取成功!第15页有50条数据
第11页爬取成功!第11页有50条数据
第6页爬取成功!第6页有50条数据
第9页爬取成功!第9页有50条数据
第8页爬取成功!第8页有50条数据
====================================================================================================
爬取完成,已将结果保存至./钟南山-中国工程院-000039361479/
"""
- 如果希望得到该作者在知网上的文章类型概览,可以使用
.getinfo(save=True)
方法,save参数是用于选择是否需要保存概览的,默认为True,可以不填。如:
from CnkiSpider import AuthorSpider
"""
getinfo()默认在当前目录下保存概览文件,如果不需要可以将save改为False,即
getinfo(save=False)。保存的文件名为overview.csv
"""
name = '钟南山'
code = '000039361479'
inst = '中国工程院'
cas = AuthorSpider(author_name=name,author_code=code,institution=inst)
cas.getinfo()# cas.getinfo(save=False)
"""
输出结果为:
钟南山在知网上共有记录820条,详细情况如下:
总库:820篇
学术期刊:699篇
特色期刊:8篇
学术辑刊:0篇
学位论文:0篇
博士:0篇
硕士:0篇
会议:109篇
国内会议:103篇
国际会议:6篇
会议视频:0篇
报纸:4篇
年鉴:0篇
专利:0篇
中国专利:0篇
海外专利:0篇
图书:0篇
外文图书:0篇
中文图书:0篇
标准:0篇
国家标准:0篇
行业标准:0篇
标准题录:0篇
成果:0篇
古籍:0篇
视频:0篇
"""
- 设置输出文件保存路径可以通过
.path=
的方式修改
from CnkiSpider import AuthorSpider
"""
将author_name,author_code,institution三个参数传入AuthorSpider中,
再使用get_all_article()方法即可快速获取该作者的所有文章
文件保存在当前目录下
"""
name = '钟南山'
code = '000039361479'
inst = '中国工程院'
cas = AuthorSpider(author_name=name,author_code=code,institution=inst)
cas.path = './new_dir/'
# 修改后以下两个函数保存的文件路径都会变为设置的路径,但是输出文件的名称无法更改
cas.getinfo()
cas.get_all_article()
计划
- 加入更多的搜索方式
- 主题
- 篇关摘
- 关键词
- 篇名
- 全文
- 第一作者
- 通讯作者
- 作者单位
- 基金
- 摘要
- 小标题
- 参考文献
- 分类号
- 文献来源
- DOI
- 加入自定义保存路径
- 尝试用异步的方式,或许会有更高的效率
- ……
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
CnkiSpider-1.0.8.tar.gz
(10.0 kB
view details)
Built Distribution
File details
Details for the file CnkiSpider-1.0.8.tar.gz
.
File metadata
- Download URL: CnkiSpider-1.0.8.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93fedc2c9af628d2f8835c826516b9782020990403cb16056530562f31b4a81b |
|
MD5 | d985e7ede750dda7f57ea2bf5f32adc9 |
|
BLAKE2b-256 | 94c0a88438e3abd818064c7aea065582075a5ed8540fcc4338cb3fb9428a69fc |
File details
Details for the file CnkiSpider-1.0.8-py3-none-any.whl
.
File metadata
- Download URL: CnkiSpider-1.0.8-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d15852520bb1d7a8b96e9cb66c8f9150e45876c0a0dbd232e578c61b3498ed51 |
|
MD5 | d3be4fc11ab9349ce38e6e7c9cdbee1c |
|
BLAKE2b-256 | 86ed1a50502f2b4238d13ecc67a859c40a029fa1b9e0faa778a719779d32cf26 |