selenium_webdriver(python)控制浏览器滚动条

#coding=utf-8  
from selenium import webdriver  
import time  
#访问百度  
driver=webdriver.Firefox()  
driver.get("http://www.baidu.com")  
#搜索  
driver.find_element_by_id("kw").send_keys("selenium")  
driver.find_element_by_id("su").click()  
time.sleep(3)  
#将页面滚动条拖到底部  
js="var q=document.documentElement.scrollTop=100000"  
driver.execute_script(js)  
time.sleep(3)  
#将滚动条移动到页面的顶部  
js="var q=document.documentElement.scrollTop=0"  
driver.execute_script(js)  
time.sleep(3)  
#将页面滚动条移动到页面任意位置,改变等于号后的数值即可  
js="var q=document.documentElement.scrollTop=50"  
driver.execute_script(js)  
time.sleep(999999)  
''''' 
#若要对页面中的内嵌窗口中的滚动条进行操作,要先定位到该内嵌窗口,在进行滚动条操作 
js="var q=document.getElementById('id').scrollTop=100000" 
driver.execute_script(js) 
time.sleep(3) 
'''  
driver.quit()

这样你就可以实现通过selenium来控制浏览器中的导航条,在爬虫中,服务器返回的数据并不是一次性就返回完毕的,而是通过你逐步向下浏览,通过js逐步加载出来的,也就是你没浏览到哪个地方的时候,这个地方的数据并不会加载出来,那么我们就可以模拟鼠标滚轮向下翻页的动作,让数据被动的加载出来,那么当我们爬虫爬取到这个地方的时候,数据已经加载出来了,就不会出现定位不到元素或者爬取的图片都是未加载出来的图片。
如果想让你的导航条下拉的节奏与你爬虫向下爬取数据的节奏保持一致,那么该怎么做呢?提供一个已经实现的思路:
比如,你要爬取的标签已经保存在了一个列表里面,那么这个列表的长度就是你在该页面要爬取的次数,浏览器从上到下的长度是0-10000,那么10000/(列表的长度),这个结果就是你导航条每次要移动的距离,通过距离叠加,是不是就可以不断的向下拉导航条了?认真想想是不是这样的?
如果还是不理解,请在留言处留下你的邮箱,我将代码发给你参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值