假期,老师给布置了 Python 爬虫中国知网论文的任务,目前实现了登录和搜索功能,先写一下遇到的坑和解决办法吧。

Python 爬虫中国知网论文过程中遇到的坑及解决办法

  • 一. selenium 模块
    • 1. 浏览器驱动程序下载与安装
    • 2. NoSuchElementException
    • 3. ElementClickInterceptedException

一. selenium 模块

概念:是一个基于浏览器自动化的模块。

其与爬虫间的关系:

  1. 便捷捕获到动态加载的数据(可见即可得);
  2. 实现模拟登录。

缺点:慢。(可以理解成 requests 模块可能 1 秒发起 10 个请求,但 selenium 可能 1 秒只发起 1 个请求)

环境安装:pip install selenium

基本使用:

  1. 使用某一款浏览器的驱动程序;
  2. 实例化某一款浏览器对象。

1. 浏览器驱动程序下载与安装

!坑:一直寻找和自己谷歌浏览器对应版本的驱动,没找到,结果换了一个稍低版本的驱动竟然也兼容。学我如果报错了,憋找我。。。

  • Google Chrome 浏览器下载:https://www.google.cn/chrome/
  • Google 驱动程序 chromedriver 下载:https://npm.taobao.org/mirrors/chromedriver
  • Firefox 浏览器下载:https://www.firefox.com.cn/
  • Firefox 驱动程序 geckodriver 下载:https://github.com/mozilla/geckodriver/releases/
  • IE 浏览器下载:lhttp://www.microsoft.com/zh-cn/download/internet-explorer.aspx
  • IE 驱动程序 IEdriver 下载:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/

如何查看自己浏览器版本(截图中深色部分为点击):

谷歌

火狐


Google Chrome 浏览器和驱动对应关系(火狐貌似无对应,如果有希望 hxd 评论指出):

2. NoSuchElementException

  • 坑1:挂了学校 VPN,进入线上图书馆,点进知网却报错,网上搜索说浏览器版本和驱动不兼容,又重新卸载安装,还是报错。

  • 解决方法: 换个浏览器和驱动试试,还是报错确认不是浏览器和驱动的锅。

  • 坑2:又分析了一下,发现是点开知网打开了第二个页面,如果不跳转到第二个页面,那么还是在原来的页面上定位元素。

  • 解决办法:在点击打开第二个页面后,加入以下代码,即可跳转第二个页面,如果不确定页面数,可以打印一下。

num = bro.window_handles    #获取所有页面句柄
print(num)
bro.switch_to.window(num[1])    #跳转到第二个页面

3. ElementClickInterceptedException

坑:明明在浏览器中找到并复制了标签的 xpath ,但是运行起来却报错。

解决方法:网上查了一下说是有其他的元素掩盖了需要点击的元素,找到两种方法。

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)   # 方法1element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()  # 方法2

解决后自己的代码:

search = bro.find_element_by_id('btnSearch')
bro.execute_script("arguments[0].click();", search)

Python 爬虫中国知网论文过程中遇到的坑及解决办法相关推荐

  1. postgreSQL与postGIS安装过程中遇到的坑及解决

    记录一下postgreSQL与postGIS安装过程中遇到的坑及解决 写到前面 postgreSQL安装 postgreSQL安装包下载 postgreSQL安装 postGIS的安装 postGIS ...

  2. ac ap方案 华为_今天给大家总结下AC+AP架构使用过程中的若干问题及解决办法

    原标题:今天给大家总结下AC+AP架构使用过程中的若干问题及解决办法 早前发布了一篇<手把手教您如何大范围无线组网>,当时有朋友留言要我给点更详细的配置,有朋友建议用华为设备,也有朋友建议 ...

  3. 中国知网论文查重算法和修改攻略

    现在高校对于硕士和博士论文采用的检测系统,是由知网开发的.但该软件的具体算法,判定标准,以前一直不清楚, 本文是从知网内部工作人员哪里拿到的,揭示了知网反抄袭检测系统的算法,如何判定论文是抄袭,以及如 ...

  4. python爬取知网论文信息

    用Python爬取指望关于某个主题的所有论文摘要等信息. 很幸运的找到了一个大佬的代码来自己改改改! 先放大佬代码连接 Git 接下来就是我自己嚯嚯嚯改的,很小白的了... 应该是很详细得了 为了看懂 ...

  5. python实验过程中遇到的问题以及解决办法_20183413 2029-2020-2《Python程序设计》实验一报告...

    20183413 2019-2020-2 <Python程序设计>实验一报告 课程:<Python程序设计> 班级: 1834 姓名:李杰 学号: 20183413 实验教师: ...

  6. caffe使用过程中遇到的问题和解决办法

    cuda_success error 问题描述 在参考http://www.cnblogs.com/denny402/p/5083300.html自己尝试预处理和训练数据的时候,出现了error == ...

  7. python打包exe 之打包sklearn模型中的各种坑及其解决方法。

    之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...

  8. 编译apache过程中出现如下错误及解决办法

    在编译apache的过程中出现如下错误: no SSL-C headers found configure: error: ...No recognized SSL/TLS toolkit detec ...

  9. Cordova安装与配置过程中出现的问题及解决办法

    最近在学习jQuery Mobile,在配置环境的过程中,遇到了一些问题,看百度这方面的资料挺少的,就自己总结一下了 1,在安装Cordova CLI过程中,提示出错,基本上是网速的问题,多安装几遍就 ...

最新文章

  1. 查看CPU是i386架构和x86_64架构
  2. python label怎么用_python tkinter label标签怎么使用?
  3. js如何获取div下面的input_原生 js 如何获取宽高
  4. python 将excel文件转换为txt文件_python利用pandas将excel文件转换为txt文件的方法
  5. c++ 求2-100内的素数问题
  6. leetcode每日一题:406.queue-reconstruction-by-height(根据升高重建队列)
  7. 数据结构之c++感悟
  8. python 三目运算符
  9. Clean Code(代码整洁之道)-有意义的命名
  10. 那些惊艳到你了的古诗词?
  11. java 首次适应算法_首次适应算法java代码
  12. 捐一个亿的是加多宝,不是王老吉!只喝加多宝,不喝王老吉!
  13. 小米刷機LineageOS
  14. 我与照片之乾坤大挪移-瞬间旋转你的照片
  15. 一些常用工具下载链接
  16. 如何把计算机软件卸载干净
  17. 摩拜共享单车技术含量
  18. R语言使用ggplot绘制线型与点
  19. 在树莓派上安装mqtt客户端
  20. Flex Air 实现桌面尺子(Ruler)工具

热门文章

  1. 金蝶EAS,实体视图(EntityViewInfo)使用,数据查询无需编写SQL
  2. 为什么CynosDB叫真正的云原生数据库? 1
  3. 图片拼接 --全景图合成
  4. 算法记录 牛客网 leetcode刷题记录
  5. c# 爬虫之(搜狗微信网站)
  6. iview添加自定义表头
  7. Matomo给你的网站开通自己的统计分析
  8. Laradock入门到精通
  9. 程序员的简历到底该怎么写?
  10. laradock mysql 设置_修改laradock端口,让valet和laradock完美共存