解决微博动态加载的代码实现
来源:互联网 发布:racemenu捏脸数据 编辑:程序博客网 时间:2024/06/05 00:44
前言
假期爬取微博内容的时候遇到了不少麻烦,其中一个就是由于微博的改版,内容的呈现需要读者下拉加载出来,不然源代码中没有相应的内容,爬取时就会造成缺漏,针对这个问题,在使用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页面的滚动条操作
1 0
- 解决微博动态加载的代码实现
- android实现代码的动态加载
- 实现类似微博、QQ空间等的动态加载
- 实现类似微博、QQ空间等的动态加载
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- Spring动态对Quartz定时任务的管理,实现动态加载,停止的配置实例代码
- 解决了动态加载的问题
- 解决无法动态加载styleable的问题
- 解决jQueyMobile的动态加载办法
- 《利用反射实现类的动态加载》调试出错的解决
- 【HTML/JS】利用JQuery的load函数动态加载其它页面的内容的实现代码
- IOS动态加载代码的方法
- 动态加载原创js的代码
- IOS 动态加载启动业的代码
- 动态加载js文件的jsLoader代码
- JAVA动态加载JAR包的实现,代码很简单,但对新手很难!
- PAT B1028. 人口普查(20)
- Linux 服务器设置成支持中文
- XML解析(Python)
- jsonp跨域传值 和返回值
- 第一次接触System编程以及硬件编程
- 解决微博动态加载的代码实现
- P1051 谁拿了最多奖学金
- MFC ComboBox的使用
- The request was denied by service delegate (SBMainWorkspace) for reason: Security ("Entitlement "com
- 采集数据入库
- [Educational Codeforces Round 17 D (762D)] Maximum path
- Java SE 目录
- Nginx负载均衡的4种方案配置
- 设置新浪微博第三方登录