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函数中定义参数的四种方式
Nov 30 Python
实现python版本的按任意键继续/退出
Sep 26 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 Python
python将字典内容存入mysql实例代码
Jan 18 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
python实践项目之监控当前联网状态详情
May 23 Python
如何使用Python 打印各种三角形
Jun 28 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
Python生成器generator原理及用法解析
Jul 20 Python
使用pytorch实现线性回归
Apr 11 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框架的性能
2008/01/10 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python中的字典与成员运算符初步探究
2015/10/13 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python实现批量修改文件名
2020/03/23 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
应届实习生的自我评价范文
2014/01/05 职场文书
心理健康日活动总结
2014/05/08 职场文书
项目建议书
2015/02/04 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
工会文体活动总结
2015/05/07 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server