python爬虫问题滚动条/内嵌滚动条循环下滑(python 滑动条)

网友投稿 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滚动条

这是一个内嵌div:高考,见证过一代代人的青春时光,承载着万千家庭的期盼与梦想。它是一段难忘的回忆,浸透着汗水,有关理想与现实,勇气和坚持。人们总说高考是人生的一次重大转折,虽然,一张张考卷早已不是决定个人前途命运的唯一凭证,更不是成才的唯一钥匙,但它依然寄托着莘莘学子不负青春的誓言。今天,我们讲述的是一组平凡的故事,它映射着每个人心中的那份美好,以及在困境面前守望相助永不言弃的精神。zhegedancihenchanghenchangchangchangchangchanchanchanchangchangchangchancg


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python中的ThreadPoolExecutor(python中的//是什么意思)
下一篇:Java 深入理解创建型设计模式之建造者模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~