• 大小: 0.12M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-05-07
  • 语言: Python
  • 标签: 软件  爬虫  

资源简介

CNKICrawler
# 中国知网爬虫
## 可以爬取文章的全部信息,包括文章名、作者、作者单位、被引用次数、下载次数、文章来源、文章关键词、文章摘要、文章参考文献,文章详情页面url
## 需要安装的工具有:BeautifulSoup, xlwt

### 使用python3.x
### 运行spider_main.py即可,生成的结果文件为:data_out.xls,配置文件为Config.conf

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
from configparser import ConfigParser
from urllib.parse import quote
import socket
import os
import math
import urllib.request
from bs4 import BeautifulSoup
import time
import spider_search_page
import spider_paper

if __name__ == ‘__main__‘:
    start = time.clock()
    cf = ConfigParser()
    cf.read(“Config.conf“ encoding=‘utf-8‘)
    keyword = cf.get(‘base‘ ‘keyword‘)# 关键词
    maxpage = cf.getint(‘base‘ ‘maxpage‘)# 最大页码
    searchlocation = cf.get(‘base‘ ‘searchlocation‘) #搜索位置
    currentpage = cf.getint(‘base‘ ‘currentpage‘)
    if os.path.exists(‘data-detail.txt‘) and currentpage == 0:
        print(‘存在输出文件,删除该文件‘)
        os.remove(‘data-detail.txt‘)

    #构造不同条件的关键词搜索
    values = {
           ‘全文‘: ‘qw‘
           ‘主题‘: ‘theme‘
           ‘篇名‘: ‘title‘
           ‘作者‘: ‘author‘
           ‘摘要‘:‘abstract‘
    }
    keywordval = str(values[searchlocation])+‘:‘+str(keyword)
    index_url=‘http://search.cnki.com.cn/Search.aspx?q=‘+quote(keywordval)+‘&rank=&cluster=&val=&p=‘#quote方法把汉字转换为encodeuri?
    print(index_url)

    #获取最大页数
    html = urllib.request.urlopen(index_url).read()
    soup = BeautifulSoup(html ‘html.parser‘)
    pagesum_text = soup.find(‘span‘ class_=‘page-sum‘).get_text()
    maxpage = math.ceil(int(pagesum_text[7:-1]) / 15)
    #print(maxpage)
    cf = ConfigParser()
    cf.read(“Config.conf“ encoding=‘utf-8‘)
    cf.set(‘base‘ ‘maxpage‘ str(maxpage))
    cf.write(open(‘Config.conf‘ ‘w‘ encoding=‘utf-8‘))

    for i in range(currentpage maxpage):
        page_num=15
        page_str_num=i*page_num
        page_url=index_url+str(page_str_num)
        print(page_url)
        attempts = 0
        success = False
        while attempts < 50 and not success:
            try:
                spider_search_page.get_paper_url(page_url)
                socket.setdefaulttimeout(10)  # 设置10秒后连接超时
                success = True
            except socket.error:
                attempts += 1
                print(“第“+str(attempts)+“次重试!!“)
                if attempts == 50:
                    break
            except urllib.error:
                attempts += 1
                print(“第“+str(attempts)+“次重试!!“)
                if attempts == 50:
                    break
        cf.set(‘base‘ ‘currentpage‘ str(i))
        cf.write(open(“Config.conf“ “w“ encoding=‘utf-8‘))
    spider_paper.spider_paper()# spider_paper补全文章信息
    end = time.clock()
    print (‘Running time: %s Seconds‘%(end-start))

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .......      1045  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\.gitignore

    .......       167  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\Config.conf

    .......    174592  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\data_out.xls

    .......     11357  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\LICENSE

    .......       613  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\README.md

    .......     66113  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\result.png

    .......      2664  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\spider_main.py

    .......      5919  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\spider_paper.py

    .......      1317  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master\spider_search_page.py

     目录          0  2017-06-15 15:40  CNKICrawler-master\CNKICrawler-master

     目录          0  2020-11-19 08:34  CNKICrawler-master

----------- ---------  ---------- -----  ----

               263787                    11


评论

共有 条评论