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 切片和range()用法说明
Mar 24 Python
python不带重复的全排列代码
Aug 13 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python Gitlab Api 使用方法
Aug 28 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
基于python实现图片转字符画代码实例
Sep 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
PHP模拟asp中response类实现方法
2015/08/08 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
动态添加js事件实现代码
2009/03/12 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python算法学习之计数排序实例
2013/12/18 Python
python动态加载变量示例分享
2014/02/17 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
方正Java笔试题
2014/07/03 面试题
效能风暴心得体会
2014/09/04 职场文书
小学教师岗位职责
2015/04/02 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
vue实现移动端div拖动效果
2022/03/03 Vue.js
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏