Python爬虫信息输入及页面的切换方法


Posted in Python onMay 11, 2018

实现网页的键盘输入操作

from selenium.webdriver.common.keys import Keys 
动态网页有时需要将鼠标悬停在某个元素上,相应的列表选项才能显示出来。 
而爬虫在工作的时候也需要相应的操作,才能获得列表项。 
driver.find_element_by_class_name(...).send_keys(需要输入的字串) 
#find_element_by_class_name可以是find_element_by_link_text、find_element_by_id等其他方式 
#send_keys一些特殊字符串,可以通过help(Keys)显示出来,如实现按回车操作需要使用Keys.ENTER

实现网页上的鼠标的动作

driver.find_element_by_link_text('更多').click()#需要指示到/a链接的位置

#同样find_element_by_link_text可以是find_element_by_id等类似的其他方式

使用ActionChains可以实现鼠标的更多操作

from selenium.webdriver.common.action_chains import *

ActionChains中的操作:

click() -- 单击、click_and_hold()-- 按下鼠标左键在一个元素上、context_click() --单击、double_click()--双击、drag_and_drop()--拖动、key_down()、key_up()、move_by_offset()、move_to_elment()、move_to_elment_with_offset()

动态网页鼠标操作及遇到的问题

动态网页有时需要将鼠标悬停在某个元素上,相应的列表选项才能显示出来。而爬虫在工作的时候也需要相应的操作,才能获得列表项。

#首先需要将鼠标停留到相应的元素
chain = ActionChains(driver)
moveelment = driver.find_element_by_xpath("...")
chain.move_to_element(moveelment).perform()
driver.find_element_by_xpath("//div[@class='search-condition c5 drop-down']/a/div").click()
#而后进行选择列表项
driver.find_element_by_xpath("//ul[@id='category_list']/li[1]/a").click()
driver.find_element_by_xpath("//ul[@id='category_list']/li[2]/a").click()

而当想要进行多列操作时出现了问题:driver.find_element_by_xpath("//ul[@id='category_list']/li[2]/a").click()一直无法成功仔细debug发现:在人工浏览查看相应列表时,全屏情况下列表显示是3列,而当需要聚焦特殊网页时,通过解析current_url进行比较即可,是否存在更好的方法。如果窗口很小就只能显示第一列的值。所以尝试将爬虫后台浏览器窗口设置成最大化,程序正常工作,如下:

#... ... 
driver.find_element_by_xpath("//ul[@id='category_list']/li[1]/a").click() 
driver.maximize_window()  
time.sleep(1) 
driver.find_element_by_xpath("//ul[@id='category_list']/li[2]/a").click()

关于窗口的页面切换方式

经常在网页操作时,会弹出新的页面,而爬虫需要程序进行窗口间的切换。

#切换网页,以获取新弹出的网页窗口 
for handle in driver.window_handles: 
  driver.switch_to_window(handle) 
  print('current url:%s'%driver.current_url)

当需要聚焦特殊网页时,通过解析current_url进行比较即可,是否存在更好的方法。

以上这篇Python爬虫信息输入及页面的切换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 不同对象比较大小示例探讨
Aug 21 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
python中文编码与json中文输出问题详解
Aug 24 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
Python接口测试文件上传实例解析
May 22 Python
Python如何脚本过滤文件中的注释
May 27 Python
Python APScheduler执行使用方法详解
Dec 10 Python
用Python自动清理系统垃圾的实现
Jan 18 Python
对python-3-print重定向输出的几种方法总结
May 11 #Python
利用Python如何实现数据驱动的接口自动化测试
May 11 #Python
Python数据结构之图的应用示例
May 11 #Python
python 重定向获取真实url的方法
May 11 #Python
基于python 爬虫爬到含空格的url的处理方法
May 11 #Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 #Python
解决Python网页爬虫之中文乱码问题
May 11 #Python
You might like
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
PDO::_construct讲解
2019/01/27 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
工业设计专业推荐信
2013/10/29 职场文书
技术总监的工作职责
2013/11/13 职场文书
大学生英语演讲稿
2014/04/24 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
共青团员自我评价范文
2014/09/14 职场文书
银行求职自荐信范文
2015/03/04 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript