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 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
python装饰器初探(推荐)
Jul 21 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
对python多线程与global变量详解
Nov 09 Python
python实现视频分帧效果
May 31 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
PyTorch预训练的实现
Sep 18 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
python 有效的括号的实现代码示例
2019/11/11 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
技术学校毕业生求职信分享
2013/12/02 职场文书
医药销售求职信范文
2014/02/01 职场文书
遗产继承公证书
2014/04/09 职场文书
三问三解心得体会
2014/09/05 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
给下属加薪申请报告
2015/05/15 职场文书
收入证明范本
2015/06/12 职场文书
安全教育主题班会总结
2015/08/14 职场文书