# -*- coding: utf-8 -*-
#时间:2019.5.1
#运行环境Python 3.*
'''
1、运行此代码前需要先下载Chrome浏览器,去百度搜索下载
2、我是利用selenium自动化测试工具进行爬取的,所以要再安装Selenium库,pip install selenium
3、ChromeDriver环境配置,先知道安装的Chrome浏览器的版本号,然后去https://chromedriver.storage.googleapis.com/index.html下载对应版本的驱动器,我用的是73的
所以下载驱动也是73版本的,接着要么是将这个可视化驱动Chromedriver.exe配置到环境变量中(这种方法我就不多说了,可以上网搜。我这提供我用的驱动:链接:https://pan.baidu.com/s/1W5XWG3Rj8kNYHo9R9dmW_g 提取码:tqxd
复制这段内容后打开百度网盘手机App,操作更方便哦),我这儿是直接将路径作为参数传入,如下。
###运行的时候后会有Chrome浏览器弹出来,这时候在代码下方输入要爬取的页数,然后回车等结果就OK啦
'''from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import csv# 设置谷歌驱动器的环境
options = webdriver.ChromeOptions()
# 设置chrome不加载图片,提高速度
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# 创建一个谷歌驱动器
browser = webdriver.Chrome(options=options,executable_path='D:\Python35\Scripts\chromedriver')#executable_path是驱动器chromedriver的路径
browser.minimize_window()#最小化窗口,方便输入要检索的页数和关键词
url = 'http://wap.cnki.net/touch/web/guide'def start_spider(page):# 请求urlbrowser.get(url)# 显示等待输入框是否加载完成WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located((By.ID, 'keyword')))# 找到输入框的id,并输入关键字,如这儿我们输入测绘,待会儿我们爬取的就是关于测绘文献方面的信息word=input("请输入要检索的关键词 :")print("\n请稍等片刻!")browser.find_element_by_id('keyword').send_keys(word)# 输入关键字之后点击搜索browser.find_element_by_id('btnSearch ').click()# print(browser.page_source)# 显示等待文献是否加载完成WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'g-search-body')))# 声明一个标记,用来标记翻页几页count = 1while True:# 显示等待加载更多按钮加载完成WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'c-company__body-item-more')))# 获取加载更多按钮Btn = browser.find_element_by_class_name('c-company__body-item-more')# 显示等待该信息加载完成WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@id="searchlist_div"]/div[{}]/div[@class="c-company__body-item"]'.format(2*count-1))))# 获取在div标签的信息,其中format(2*count-1)是因为加载的时候有显示多少条# 简单的说就是这些div的信息都是奇数divs = browser.find_elements_by_xpath('//div[@id="searchlist_div"]/div[{}]/div[@class="c-company__body-item"]'.format(2*count-1))# 遍历循环for div in divs:# 获取文献的题目name = div.find_element_by_class_name('c-company__body-title').text# 获取文献的作者author = div.find_element_by_class_name('c-company__body-author').text# 获取文献的来源和日期、文献类型等text = div.find_element_by_class_name('c-company__body-name').text.split()if (len(text) == 3 and text[-1] == '优先') or len(text) == 2:# 来源source = text[0]# 日期datetime = text[1]# 文献类型literature_type = Noneelse:source = text[0]datetime = text[2]literature_type = text[1]data=(name,author,source,datetime,literature_type)with open('D:\Python_DATA\data.csv', 'a', encoding='utf-8', newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(data)# 如果Btn按钮(就是加载更多这个按钮)没有找到(就是已经到底了),就退出if not Btn:breakelse:Btn.click()# 如果到了爬取的页数就退出if count == page:breakcount += 1# 延迟,让爬虫爬取慢点,给服务器减轻压力,以免服务器崩溃time.sleep(3)if __name__ == '__main__':
# 先写入表头信息with open('D:\Python_DATA\data.csv', 'a', encoding='utf-8', newline='') as csvfile:  # 存储的路径可以自己设置,我存在了D:\Python_DATA\data.csv里writer = csv.writer(csvfile)writer.writerow(("文献名", "作者", "来源", "发表日期", "文献类型"))start_spider(page=eval(input('请输入要爬取的页数(如果需要全部爬取请输入0,可能需要等很长时间):')))  # eval()是执行一个字符串表达式browser.close()print("爬取完成,请到相应文件夹查看!")

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

  1. Python爬虫:最牛逼的 selenium爬取方式!

    Python爬虫:最牛逼的 selenium爬取方式! 作为一个男人 在最高光的时刻 这是小编准备的python爬虫学习资料,加群:700341555即可免费获取! Python爬虫:最牛逼的 sel ...

  2. python爬取酒店信息_python selenium爬取去哪儿网的酒店信息(详细步骤及代码实现)...

    准备工作 1.pip install selenium 2.配置浏览器驱动.配置其环境变量 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件下载chromed ...

  3. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  4. python爬取58同城租房信息,用selenium爬取58同城租房信息(万级数据)

    今天想做一个58同城的爬虫,然后到页面分析一下链接,发现58同城的链接的有些参数是由js动态生成的,然后我就想偷懒了.(当然其实去js文件中找到生成式并不难),但我就是不想去找.然后就想到了selen ...

  5. python携程酒店评论_Python基于selenium爬取携程酒店评论信息

    爬取站点 任意一个携程酒店的详细链接,这里给出了四个,准备开四个线程爬取: https://hotels.ctrip.com/hotel/6278770.html#ctm_ref=hod_hp_hot ...

  6. [selenium爬知乎热榜

    selenium爬知乎热榜 @selenium爬知乎热榜 环境配置 首先,你需要安装一个python的环境.可以从python官网下载. python官网下载链接 python环境配置各位可以去找别的 ...

  7. selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)

    selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...

  8. 知网根据作者及单位检索文献汇总到Excel(2021.6.9)

    依据作者及单位在知网检索文献汇总至Excel 实践(2021.6.9) 1.知网依据作者及单位检索文献 1.1 检索实例(29条结果) 1.1.1 20个页面每页显示20条检索结果 1.1.2 1个页 ...

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

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

最新文章

  1. CPA、CPS、CPM、CPT、CPC 是什么
  2. delphi——用线程创建一个窗体笔记
  3. 分布式系统的开发经验与心得
  4. 数据库零碎要点002---认识时序数据库
  5. MT4红绿柱黄白线双线MACD指标
  6. PMP 考试一定要报培训班吗?(PMP备考资料分享)
  7. 数据挖掘期末论文要求
  8. 爆炸性环境电气设计选型
  9. CDR X7(CorelDRAW)注册下载详细安装教程,序列号功能齐全
  10. java es nested_关于nested类型的使用
  11. 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
  12. elastic search7 java开发简单教程
  13. 观点五、史上首次揭露广告的真相
  14. 谨慎使用多线程中的fork
  15. 可nbsp;爱nbsp;女nbsp;人
  16. 莆田python培训
  17. android获取时区时间格式,Android关于获取日期时间知识点整理
  18. 计算机并口被禁用,电脑并口被禁用怎么解决?
  19. 万春总与无线院深圳管理干部沟通交流纪要
  20. maple激活后不联网就会初始化错误解决方案——添加虚拟网卡

热门文章

  1. Java数字类型转byte数组
  2. 在没有装Access2007的电脑上能否用ASP等连接accdb格式数据库?
  3. 解决上传图片自动旋转的问题以及对图片进行压缩上传
  4. idea执行main方法都要BUILD解决
  5. leetcode:218. 天际线问题【区间修改 + 单点查询 + 找最大值板子 + 线段树】
  6. 用python画气球循环画图_Python 利用循环画散点图
  7. 终于解决了无线鼠标装不上驱动的问题
  8. UEFI环境下对Windows To Go硬盘分区后无法启动的解决办法
  9. 用计算机弹音乐忘川彼岸倾宸红妆,一句心情说说唯美句子
  10. 手机号识别SDK,快递福音