多平台统一管理软件接口,如何实现多平台统一管理软件接口
801
2022-08-28
python爬虫问题滚动条/内嵌滚动条循环下滑(python 滑动条)
缘由
通常我们的爬取页面的时候会碰到滚动条无限可以下拉的情况.
浏览器自带外边的滚动条
解决方法:思路就是用scrollBy一直下拉滚动条,然后scrollTop会一直变化,当scrollTop不变时,说明就到底了。跳出循环即可。代码复现:
import timefrom selenium import webdriverdef main(): driver = webdriver.Chrome() driver.maximize_window() driver.get('< # driver.find_element_by_id('kw').send_keys('python滚动条的高度') # time.sleep(1) # driver.find_element_by_id('su').click() time.sleep(2) # 定义一个初始值 temp_height = 0 while True: # 循环将滚动条下拉 driver.execute_script("window.scrollBy(0,300)") # sleep一下让滚动条反应一下 time.sleep(2) # 获取当前滚动条距离顶部的距离 check_height = driver.execute_script( "return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;") # 如果两者相等说明到底了 if check_height == temp_height: break temp_height = check_height print(check_height) driver.quit()if __name__=="__main__": main()
内嵌滚动条,循环下滑到最底部
代码复现:
#encoding:utf-8from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get('file:///Users/starrysky/Desktop/PythonProject/spider_slide_bottom/web/index.html')time.sleep(2)# 竖向滚动条操作js1='var q=document.getElementById("yoyoketang").scrollTop = 10000'driver.execute_script(js1)time.sleep(2)js2='var q=document.getElementById("yoyoketang").scrollTop = 0'driver.execute_script(js2)time.sleep(2)# 横向滚动条操作js3='var q=document.getElementById("yoyoketang").scrollLeft = 10000'driver.execute_script(js3)time.sleep(2)js4='var q=document.getElementById("yoyoketang").scrollLeft = 0'driver.execute_script(js4)time.sleep(2)# 用classnamejs5 = "var q=document.getElementsByClassName('scroll')[0].scrollTop = 10000"driver.execute_script(js5)js6 = "var q=document.getElementsByClassName('scroll')[0].scrollLeft = 10000"driver.execute_script(js6)
参数化(想实现每次下滑一页,但是找不到这个高度,以后找到方法再优化)
#encoding:utf-8from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get('file:///Users/starrysky/Desktop/PythonProject/spider_slide_bottom/web/index.html')time.sleep(2)for i in range(0, 6000, 850): js5 = "var q=document.getElementsByClassName('ag-body-viewport ag-layout-normal ag-row-animation')[0].scrollTop={}".format( i) print("===>", i) driver.execute_script(js5) time.sleep(2)
页面html代码
欢迎你
这是一个内嵌的div滚动条
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~