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

使用方式

1、AuthorSpider

基本介绍

目前只有AuthorSpider()这一个类,也就是仅支持通过作者进行搜索。下面来介绍Author可以使用的方法和属性:

  • 基本参数

    cas = CnkiSpider.AuthorSpider(author_name,author_code='',institution='') author_name:作者姓名,必填 author_code:作者代码,选填 institution:作者第一机构,选填

  • 属性: cas.name作者姓名 cas.code作者代码 cas.institution作者第一机构 cas.path文件存放路径 cas.session爬虫session(带有cookies)

  • 方法: cas.getinfo(save=True)获取概览信息,默认保存在cas.path路径下的overview.csv文件中 cas.author_recommend()如果作者信息不完整(如缺少代码、缺少第一机构),可以用这个方法补全 cas.get_all_article()获取当前作者的所有文章,并保存在cas.path路径下的result.csv文件

使用方式

如果知道需要爬取的作者的姓名、代码和第一机构,那么可以按照如下操作获取结果:

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退出,输入re再次获取):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

name = '钟南山' 
code = '000039361479' 
inst = '中国工程院'
cas = AuthorSpider(author_name=name,author_code=code,institution=inst)
# 设置路径
cas.path = './new_dir/' 
# 修改后以下两个函数保存的文件路径都会变为设置的路径,但是输出文件的名称无法更改
cas.getinfo()
cas.get_all_article()

2、KeywordSpider

(开发中……)

3、TopicSpider

(开发中……)

4、……

计划

  • 加入更多的搜索方式
    • 主题
    • 篇关摘
    • 关键词
    • 篇名
    • 全文
    • 第一作者
    • 通讯作者
    • 作者单位
    • 基金
    • 摘要
    • 小标题
    • 参考文献
    • 分类号
    • 文献来源
    • 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.9.tar.gz (10.4 kB view hashes)

Uploaded Source

Built Distribution

CnkiSpider-1.0.9-py3-none-any.whl (11.7 kB view hashes)

Uploaded Python 3

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