步骤:

  1. 获取网页url
  2. 解析网页,发现网页大部分内容存储在了iframe标签中
  3. 通过selenium获取信息并保存到CSV文件中
  4. 更多源码已放置码云
import csvfrom selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, WebDriverExceptionclass Author:name = ''school = ''major = ''sum_public = ''sum_download = ''fields = []articles = []teacher = ''students = []def __init__(self,url="https://kns.cnki.net/kcms/detail/knetsearch.aspx?dbcode=CMFD&sfield=au&skey=%e8%82%96%e7%9b%b8%e6%ac%a3&code=42962547&v=XuuQ%25mmd2Fi3qrWQVFULCjpwXoY%25mmd2BbZqrZ3W7KIDLXBs226SGLHyEOO6LJv4PgXwW%25mmd2BwxsG "):print("开始爬取作者信息")self.driver = webdriver.Chrome()print("正在打开浏览器。。")self.driver.get(url)print("全局等待时间设置为3秒")self.driver.implicitly_wait(3)print("窗口最大化")self.driver.maximize_window()def crawl_main(self):"""爬取主要信息:姓名,学校,专业,总发文量,总下载量"""name_tag = self.driver.find_element_by_tag_name("h1")school_tag = self.driver.find_element_by_xpath("//div/h3[1]")major_tag = self.driver.find_element_by_xpath("//div/h3[2]")sum_public_tag = self.driver.find_element_by_xpath('//h5/em[1]')sum_download_tag = self.driver.find_element_by_xpath('//h5/em[2]')self.name = name_tag.text if name_tag else ""self.school = school_tag.text if school_tag else ""self.major = major_tag.text if major_tag else ""self.sum_public = sum_public_tag.text if sum_public_tag else ""self.sum_download = sum_download_tag.text if sum_download_tag else ""print("【作者信息】{0: ^12} 爬取成功!".format(self.name))def crawl_fields(self):"""爬取作者关注领域"""try:# 跳回原框架self.driver.switch_to.default_content()self.driver.switch_to.frame("frame1")listcon_tag = self.driver.find_element_by_class_name('listcont')lis = listcon_tag.find_elements_by_tag_name('li')for li in lis:self.fields.append(li.text)print("【关注领域】{0: <12} 爬取成功!".format(li.text))except NoSuchElementException:print("作者无关注领域!")except WebDriverException:print("进入框架frame1异常!")def crawl_articles(self):"""爬取作者的文献"""try:# 跳回原框架self.driver.switch_to.default_content()self.driver.switch_to.frame("frame2")ul_tag = self.driver.find_element_by_xpath("//div/ul")lis = ul_tag.find_elements_by_tag_name('li')for li in lis:temp = li.find_element_by_tag_name('a').textself.articles.append(temp)print("【作者文献】{0: <20} 爬取成功!".format(temp))except NoSuchElementException:print("作者无文献!")except WebDriverException:print("进入框架frame2异常!")def crawl_teacher(self):"""爬取作者导师"""try:# 跳回原框架self.driver.switch_to.default_content()self.driver.switch_to.frame("frame9")name_tag = self.driver.find_element_by_class_name('name')self.teacher = name_tag.textprint("【作者导师】{0: <12} 爬取成功!".format(self.teacher))except NoSuchElementException:print("作者无导师!")except WebDriverException:print("进入框架frame9异常!")def crawl_students(self):"""爬取作者学生"""try:self.driver.switch_to.default_content()self.driver.switch_to.frame("frame12")listcon_tag = self.driver.find_element_by_class_name('listcont')lis = listcon_tag.find_elements_by_tag_name('li')for li in lis:self.students.append(li.text)print("【作者学生】{0: <12} 爬取成功!".format(li.text))except NoSuchElementException:print("作者无学生!")except WebDriverException:print("进入框架frame12异常!")def close_driver(self):"""关闭当前页面"""self.driver.close()def save_csv(self, f):"""存储到csv文件中"""self.crawl_main()self.crawl_fields()self.crawl_articles()self.crawl_teacher()self.crawl_students()f_csv = csv.writer(f)f_csv.writerow((self.name, self.school, self.major, self.sum_public, self.sum_download, self.fields,self.articles, self.teacher, self.students))self.close_driver()

【毕设】selenium 爬取知网作者信息相关推荐

  1. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  2. 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要

    使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...

  3. java+selenium爬取知网数据

    使用selenium工具爬取知网相关数据,思路:根据几个关键词搜索出相关的内容,然后爬取列表中所有论文的访问链接. 注意:直接爬取的链接是不能用的,需要自己拼接一下.具体看代码.新手,代码写的有点乱. ...

  4. 利用CnkiSpider包快速爬取知网文献信息

    CnkiSpider使用指南(by@zemengchuan) GitHub链接:https://github.com/zemengchuan/CnkiSpider 用途: CnkiSpider可以通过 ...

  5. Selenium爬取MOOC网课程信息

    近期在写一份关于大数据相关的作业,需要搜索近年来市面上关于大数据的书籍信息和课程信息.其中一位同学负责在当当网上爬取书籍信息,我就负责爬取MOOC网的课程信息. 刚开始的时候,以为MOOC网作为一个公 ...

  6. Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)

    # -*- coding: utf-8 -*- #时间:2019.5.1 #运行环境Python 3.* ''' 1.运行此代码前需要先下载Chrome浏览器,去百度搜索下载 2.我是利用seleni ...

  7. selenium爬取珍爱网用户信息

    近期接到一个任务,爬取珍爱网上的用户信息,这个对单身的我来说瞬间提起了兴趣,这有可能是我脱单的开始,哼哼,不装逼了,先来看看怎么帮我脱单,嘻嘻嘻 import requests import time ...

  8. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  9. 爬虫练习(一)爬取知网、万方、维普文献标题、作者、刊物来源等信息

    刚刚开始学习Python,今天一周整,浏览了站内一些大侠博客相关内容,自己也尝试着写了一个爬虫. 直接借鉴了几位大侠的经验,如有冒犯之处恳请海涵. 先说说目的吧,本爬虫的目的是根据EXCEL文件的作者 ...

  10. 使用Python爬取知网信息

    使用Python爬取知网信息 import requests from urllib import request from lxml import etree import re import cs ...

最新文章

  1. 【NLP】巧借“他山之石”,生成信息量大、可读性强且稳定的摘要
  2. 笑话(15) 这是地球
  3. emui华为java2p_大文件包来了!两款华为手机依然在更新,EMUI两大功能很实用
  4. 一篇详文带你入门 Redis
  5. 大数据平台蓝图_数据科学面试蓝图
  6. Java前端技术学习
  7. 实用常识 | HTML嵌入处理MARKDOWN合并单元格
  8. 程序员入门--两年养成之路
  9. SQL Server调优系列进阶篇(查询优化器的运行方式)
  10. Lua之table(表)
  11. 历史数据清理--方案
  12. SpringMVC错误提示(三)
  13. 5.Chrome开发者工具不完全指南:(三、性能篇)
  14. 广数980系统锁解除密码
  15. 深度剖析Java集合之BitSet
  16. 微信小程序实现FBX模型的动画加载
  17. IPv6邻居发现协议--NDP详解
  18. 大家来参与一个外包项目的需求分析,考察自己是否有当项目经理/总监的潜力
  19. Reducing the Number of Gray Levels, Zooming and Shrinking Images
  20. 无线路由器的DNS服务器怎么设置,无线路由器dns服务器怎么设置

热门文章

  1. POSTMAN接口测试流程
  2. 《Python金融大数据风控建模实战》 第14章 决策树模型
  3. 信号分析与处理 基于matlab认识实验
  4. 储量级别122b_储量级别代码是什么
  5. Python调用OpenCV实现图像反色(反相)处理
  6. PAT简介和2019年秋季浙大PAT考试报名流程
  7. Vue-pdf预览pdf文档
  8. win7录屏_好哈屏幕录制下载_好哈屏幕录制最新官方版下载[录屏软件]
  9. 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
  10. 四方位陈述RV系列蜗轮蜗杆减速机产品