【毕设】selenium 爬取知网作者信息
步骤:
- 获取网页url
- 解析网页,发现网页大部分内容存储在了
iframe
标签中 - 通过selenium获取信息并保存到CSV文件中
- 更多源码已放置码云
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 爬取知网作者信息相关推荐
- python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息
python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...
- 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要
使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...
- java+selenium爬取知网数据
使用selenium工具爬取知网相关数据,思路:根据几个关键词搜索出相关的内容,然后爬取列表中所有论文的访问链接. 注意:直接爬取的链接是不能用的,需要自己拼接一下.具体看代码.新手,代码写的有点乱. ...
- 利用CnkiSpider包快速爬取知网文献信息
CnkiSpider使用指南(by@zemengchuan) GitHub链接:https://github.com/zemengchuan/CnkiSpider 用途: CnkiSpider可以通过 ...
- Selenium爬取MOOC网课程信息
近期在写一份关于大数据相关的作业,需要搜索近年来市面上关于大数据的书籍信息和课程信息.其中一位同学负责在当当网上爬取书籍信息,我就负责爬取MOOC网的课程信息. 刚开始的时候,以为MOOC网作为一个公 ...
- Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)
# -*- coding: utf-8 -*- #时间:2019.5.1 #运行环境Python 3.* ''' 1.运行此代码前需要先下载Chrome浏览器,去百度搜索下载 2.我是利用seleni ...
- selenium爬取珍爱网用户信息
近期接到一个任务,爬取珍爱网上的用户信息,这个对单身的我来说瞬间提起了兴趣,这有可能是我脱单的开始,哼哼,不装逼了,先来看看怎么帮我脱单,嘻嘻嘻 import requests import time ...
- [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试
作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下: 1.爬取内容总为空,其原因 ...
- 爬虫练习(一)爬取知网、万方、维普文献标题、作者、刊物来源等信息
刚刚开始学习Python,今天一周整,浏览了站内一些大侠博客相关内容,自己也尝试着写了一个爬虫. 直接借鉴了几位大侠的经验,如有冒犯之处恳请海涵. 先说说目的吧,本爬虫的目的是根据EXCEL文件的作者 ...
- 使用Python爬取知网信息
使用Python爬取知网信息 import requests from urllib import request from lxml import etree import re import cs ...
最新文章
- 【NLP】巧借“他山之石”,生成信息量大、可读性强且稳定的摘要
- 笑话(15) 这是地球
- emui华为java2p_大文件包来了!两款华为手机依然在更新,EMUI两大功能很实用
- 一篇详文带你入门 Redis
- 大数据平台蓝图_数据科学面试蓝图
- Java前端技术学习
- 实用常识 | HTML嵌入处理MARKDOWN合并单元格
- 程序员入门--两年养成之路
- SQL Server调优系列进阶篇(查询优化器的运行方式)
- Lua之table(表)
- 历史数据清理--方案
- SpringMVC错误提示(三)
- 5.Chrome开发者工具不完全指南:(三、性能篇)
- 广数980系统锁解除密码
- 深度剖析Java集合之BitSet
- 微信小程序实现FBX模型的动画加载
- IPv6邻居发现协议--NDP详解
- 大家来参与一个外包项目的需求分析,考察自己是否有当项目经理/总监的潜力
- Reducing the Number of Gray Levels, Zooming and Shrinking Images
- 无线路由器的DNS服务器怎么设置,无线路由器dns服务器怎么设置
热门文章
- POSTMAN接口测试流程
- 《Python金融大数据风控建模实战》 第14章 决策树模型
- 信号分析与处理 基于matlab认识实验
- 储量级别122b_储量级别代码是什么
- Python调用OpenCV实现图像反色(反相)处理
- PAT简介和2019年秋季浙大PAT考试报名流程
- Vue-pdf预览pdf文档
- win7录屏_好哈屏幕录制下载_好哈屏幕录制最新官方版下载[录屏软件]
- 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
- 四方位陈述RV系列蜗轮蜗杆减速机产品