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复制与引用用法分析
Apr 08 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
python 基础教程之Map使用方法
Jan 17 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
django-初始配置(纯手写)详解
Jul 30 Python
基于python操作ES实例详解
Nov 16 Python
python with (as)语句实例详解
Feb 04 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
function.inc.php超越php
2006/12/09 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
python中字符串数组逆序排列方法总结
2019/06/23 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
python web框架 django wsgi原理解析
2019/08/20 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
一套PHP的笔试题
2013/05/31 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
实习单位证明范例
2014/11/17 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
教师节校长致辞
2015/07/31 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers