解决微博动态加载的代码实现

本文介绍如何使用Python和Java的Selenium库模拟滚动加载以获取完整网页内容。通过执行JS脚本控制浏览器滚动条,解决了动态加载内容的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

假期爬取微博内容的时候遇到了不少麻烦,其中一个就是由于微博的改版,内容的呈现需要读者下拉加载出来,不然源代码中没有相应的内容,爬取时就会造成缺漏,针对这个问题,在使用selenium进行模拟登陆之余,也进行模拟滚动条的下拉,确实有了不错的效果,但是最大的坏处就是时间消耗太大了,如果有更好的方法希望进行交流~

实现动态加载

网上的资源也很多,这里提供Python和Java两种编程语言的代码实现

Python版本

(1)使用js脚本直接操作,方法如下

js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)

(2)使用js脚本拖动到提定地方

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

(3)具体版本

#coding=utf-8  
from selenium import webdriver  
#访问微博 
driver=webdriver.Firefox()  
driver.get("http://www.weibo.com")
#这里需要停一段时间进行登录(也可以自动输入账号密码)
#将页面滚动条拖到底部  
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()  

Java版本

Java与Python是类似的

//移动到元素element对象的“顶端”与当前窗口的“顶部”对齐  
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);  
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);  

//移动到元素element对象的“底端”与当前窗口的“底部”对齐  
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);  

//移动到页面最底部  
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");  

//移动到指定的坐标(相对当前的坐标移动)  
((JavascriptExecutor) driver).executeScript("window.scrollBy(0, 700)");  
Thread.sleep(3000);  
//结合上面的scrollBy语句,相当于移动到700+800=1600像素位置  
((JavascriptExecutor) driver).executeScript("window.scrollBy(0, 800)");  

//移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置  
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, 1600)");  
Thread.sleep(3000);  
//结合上面的scrollTo语句,仍然移动到纵坐标1200像素位置  
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, 1200)");  

参考资料:
1.python中selenium操作下拉滚动条方法汇总
2.selenium_webdriver(python)控制浏览器滚动条
3.Java selenium web页面的滚动条操作

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值