Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)
# -*- 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爬取知网信息(文献名,作者,来源,发表日期,文献类型)相关推荐
- Python爬虫:最牛逼的 selenium爬取方式!
Python爬虫:最牛逼的 selenium爬取方式! 作为一个男人 在最高光的时刻 这是小编准备的python爬虫学习资料,加群:700341555即可免费获取! Python爬虫:最牛逼的 sel ...
- python爬取酒店信息_python selenium爬取去哪儿网的酒店信息(详细步骤及代码实现)...
准备工作 1.pip install selenium 2.配置浏览器驱动.配置其环境变量 Selenium3.x调用浏览器必须有一个webdriver驱动文件 Chrome驱动文件下载chromed ...
- python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- python爬取58同城租房信息,用selenium爬取58同城租房信息(万级数据)
今天想做一个58同城的爬虫,然后到页面分析一下链接,发现58同城的链接的有些参数是由js动态生成的,然后我就想偷懒了.(当然其实去js文件中找到生成式并不难),但我就是不想去找.然后就想到了selen ...
- python携程酒店评论_Python基于selenium爬取携程酒店评论信息
爬取站点 任意一个携程酒店的详细链接,这里给出了四个,准备开四个线程爬取: https://hotels.ctrip.com/hotel/6278770.html#ctm_ref=hod_hp_hot ...
- [selenium爬知乎热榜
selenium爬知乎热榜 @selenium爬知乎热榜 环境配置 首先,你需要安装一个python的环境.可以从python官网下载. python官网下载链接 python环境配置各位可以去找别的 ...
- selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)
selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...
- 知网根据作者及单位检索文献汇总到Excel(2021.6.9)
依据作者及单位在知网检索文献汇总至Excel 实践(2021.6.9) 1.知网依据作者及单位检索文献 1.1 检索实例(29条结果) 1.1.1 20个页面每页显示20条检索结果 1.1.2 1个页 ...
- python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息
python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...
最新文章
- CPA、CPS、CPM、CPT、CPC 是什么
- delphi——用线程创建一个窗体笔记
- 分布式系统的开发经验与心得
- 数据库零碎要点002---认识时序数据库
- MT4红绿柱黄白线双线MACD指标
- PMP 考试一定要报培训班吗?(PMP备考资料分享)
- 数据挖掘期末论文要求
- 爆炸性环境电气设计选型
- CDR X7(CorelDRAW)注册下载详细安装教程,序列号功能齐全
- java es nested_关于nested类型的使用
- 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
- elastic search7 java开发简单教程
- 观点五、史上首次揭露广告的真相
- 谨慎使用多线程中的fork
- 可nbsp;爱nbsp;女nbsp;人
- 莆田python培训
- android获取时区时间格式,Android关于获取日期时间知识点整理
- 计算机并口被禁用,电脑并口被禁用怎么解决?
- 万春总与无线院深圳管理干部沟通交流纪要
- maple激活后不联网就会初始化错误解决方案——添加虚拟网卡
热门文章
- Java数字类型转byte数组
- 在没有装Access2007的电脑上能否用ASP等连接accdb格式数据库?
- 解决上传图片自动旋转的问题以及对图片进行压缩上传
- idea执行main方法都要BUILD解决
- leetcode:218. 天际线问题【区间修改 + 单点查询 + 找最大值板子 + 线段树】
- 用python画气球循环画图_Python 利用循环画散点图
- 终于解决了无线鼠标装不上驱动的问题
- UEFI环境下对Windows To Go硬盘分区后无法启动的解决办法
- 用计算机弹音乐忘川彼岸倾宸红妆,一句心情说说唯美句子
- 手机号识别SDK,快递福音