python爬取动态加载页面,selenium实现滚动到底

最近的写爬虫的时候遇到一些问题,就是页面是动态加载的,抓包的时候发现页码不规律,于是想到用selenium控制浏览器自动拖拽滚动到底,找了好多方法直接是加载js的不太好用,看到一个博主的能用方法,我把他贴一下。

selenium实现无限滚动、循环滚动到底


这是我自己更新的代码,我发现一个小问题,尽管拖拽了页面到底部不再加载了,但是我请求返回的数据还是最初没有(点击加载)的页面的数据,获取不到动态加载后的数据,之前我遇到过解决方法,现在忘记了

import time
import lxml.html
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(url='https://www.nanjixiong.com/forum-228-1.html')
# 页面最大
driver.maximize_window()
# 定义一个初始值
temp_height = 0
while True:
    # 循环将滚动条下拉
    driver.execute_script("window.scrollBy(0,1000)")
    # sleep一下让滚动条反应一下
    time.sleep(0.05)
    # 获取当前滚动条距离顶部的距离
    check_height = driver.execute_script(
        "return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
    # 如果两者相等说明到底了
    if check_height == temp_height:
        driver.refresh()
        # 在这里获取网页源代码
        html_data = driver.page_source
        time.sleep(1)
        # print(html_data)
        break
    temp_height = check_height
    print(check_height)

driver.quit()
metree = lxml.html.etree
# 获取数据对象
parser = metree.HTML(html_data, metree.HTMLParser())
# 解析数据
element_list = parser.xpath('//ul[@class="ml waterfall cl"]/li')
print(len(element_list))

 看li标签新加载的元素已经不止18个了

先留着,后续有解决方法了再更新本文

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值