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的条件语句与运算符优先级详解
Oct 13 Python
python 基础教程之Map使用方法
Jan 17 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
python在非root权限下的安装方法
Jan 23 Python
Python扩展内置类型详解
Mar 26 Python
Python基于win32ui模块创建弹出式菜单示例
May 09 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Python控制Firefox方法总结
Jun 03 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
Django如何继承AbstractUser扩展字段
Nov 27 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知道与问问的采集插件代码
2010/10/12 PHP
PHP容易忘记的知识点分享
2013/04/30 PHP
基于php 随机数的深入理解
2013/06/05 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
Python中的引用和拷贝浅析
2014/11/22 Python
介绍Python中的文档测试模块
2015/04/28 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
利用python如何处理nc数据详解
2018/05/23 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Pytorch的mean和std调查实例
2020/01/02 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
检讨书之工作不认真
2019/08/14 职场文书
redis限流的实际应用
2021/04/24 Redis
Hive常用日期格式转换语法
2022/06/25 数据库