Skip to main content

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


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)

Uploaded Source

Built Distribution

CnkiSpider-1.0.8-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

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

Hashes for CnkiSpider-1.0.8.tar.gz
Algorithm Hash digest
SHA256 93fedc2c9af628d2f8835c826516b9782020990403cb16056530562f31b4a81b
MD5 d985e7ede750dda7f57ea2bf5f32adc9
BLAKE2b-256 94c0a88438e3abd818064c7aea065582075a5ed8540fcc4338cb3fb9428a69fc

See more details on using hashes here.

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

Hashes for CnkiSpider-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d15852520bb1d7a8b96e9cb66c8f9150e45876c0a0dbd232e578c61b3498ed51
MD5 d3be4fc11ab9349ce38e6e7c9cdbee1c
BLAKE2b-256 86ed1a50502f2b4238d13ecc67a859c40a029fa1b9e0faa778a719779d32cf26

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page