- 浏览: 64148 次
- 来自: 北京
文章分类
最新评论
转载自http://my.oschina.net/apdplat/blog/516848
当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢?
如类似今日头条这样的网站:http://toutiao.com/
我们可以使用Selenium来搞定这件事情。Selenium的设计目的虽然是用于Web应用程序的自动化测试,但是却非常适合用来做数据抓取,可以非常简单地绕过网站的反爬虫限制,因为Selenium直接运行在浏览器中,就像真正的用户在操作一样。
使用Selenium,我们不但可以抓取Js动态生成数据的网页,而且可以抓取以滚动页面方式分页的网页。
首先,我们使用maven引入Selenium依赖:
接下来就可以写代码抓取了:
代码也可以从我的开源项目HtmlExtractor中获取。
这里我们共抓取了6页,每页20条新闻,共120条新闻,代码运行结果如下:
当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢?
如类似今日头条这样的网站:http://toutiao.com/
我们可以使用Selenium来搞定这件事情。Selenium的设计目的虽然是用于Web应用程序的自动化测试,但是却非常适合用来做数据抓取,可以非常简单地绕过网站的反爬虫限制,因为Selenium直接运行在浏览器中,就像真正的用户在操作一样。
使用Selenium,我们不但可以抓取Js动态生成数据的网页,而且可以抓取以滚动页面方式分页的网页。
首先,我们使用maven引入Selenium依赖:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency>
接下来就可以写代码抓取了:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.List; import java.util.Random; /** * 如何抓取Js动态生成数据且以滚动页面方式分页的网页 * 以抓取今日头条为例说明:http://toutiao.com/ * Created by ysc on 10/13/15. */ public class Toutiao { public static void main(String[] args) throws Exception{ //等待数据加载的时间 //为了防止服务器封锁,这里的时间要模拟人的行为,随机且不能太短 long waitLoadBaseTime = 3000; int waitLoadRandomTime = 3000; Random random = new Random(System.currentTimeMillis()); //火狐浏览器 WebDriver driver = new FirefoxDriver(); //要抓取的网页 driver.get("http://toutiao.com/"); //等待页面动态加载完毕 Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime)); //要加载多少页数据 int pages=5; for(int i=0; i<pages; i++) { //滚动加载下一页 driver.findElement(By.className("loadmore")).click(); //等待页面动态加载完毕 Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime)); } //输出内容 //找到标题元素 List<WebElement> elements = driver.findElements(By.className("title")); int j=1; for(int i=0;i<elements.size();i++) { try { WebElement element = elements.get(i).findElement(By.tagName("a")); //输出标题 System.out.println((j++) + "、" + element.getText() + " " + element.getAttribute("href")); }catch (Exception e){ System.out.println("ignore "+elements.get(i).getText()+" because "+e.getMessage()); } } //关闭浏览器 driver.close(); } }
代码也可以从我的开源项目HtmlExtractor中获取。
这里我们共抓取了6页,每页20条新闻,共120条新闻,代码运行结果如下:
1、马航MH17空难调查最终报告 称客机系被山毛榉导弹击落 http://toutiao.com/group/6205086449652105474/ 2、杭州惊现面食一条街,网友爆料称卖米饭会被罚款5万 http://toutiao.com/group/6204736856495374594/ 3、人体暴露在太空中,能存活多久? http://toutiao.com/group/6204940493778190594/ 4、这些事,被习**婉拒了 http://toutiao.com/group/6205092471197253890/ 5、哥哥偷偷打开自闭症妹妹的电脑游戏,震惊了 http://toutiao.com/group/6205061130820698370/ 6、38888!马云拍下今年双11生鲜第一大单 http://toutiao.com/group/6205104351076221185/ 7、浙江省检察院依法对洪航勇决定逮捕 http://toutiao.com/group/6205034235734163714/ 8、“啪”被拍到了,咦我好像没违章啊 http://toutiao.com/group/6204273515422548226/ 9、会所偷排、海外买岛、倒卖油田 比周滨还牛的贪二代在这呢 http://toutiao.com/group/6205083404519719169/ 10、10个无厘头出现在太空中的漂浮物 http://toutiao.com/group/6204711297144897793/ 11、我们未来的食物 http://toutiao.com/group/6203987844262281474/ 12、向城市毒瘤动刀 住房城乡建设部推广浙江治违样板(上) http://toutiao.com/group/6205122991233483010/ 13、一粒铀原子放出的能量可移动一沙子? http://toutiao.com/group/6204754599004422402/ 14、你的眼睛骗了你,你的大脑也骗了你 http://toutiao.com/group/6202141287498137858/ 15、看这小伙儿在沙滩上抓什么呢?真没想到,又大又肥 http://toutiao.com/group/6203109871341257217/ 16、狗狗在沙滩上受够被小女孩不停踢打玩闹,一招让她知道厉害 http://toutiao.com/group/6204009873150411009/ 17、餐厅里监控拍到的一幕 http://toutiao.com/group/6204948778769613313/ 18、中国电信业这点事:提供最好服务却被骂垄断 http://toutiao.com/group/6204570190289797378/ 19、一只成精的色狗,不知道最后那美女的衣服要回来没 http://toutiao.com/group/6203831228279718401/ 20、iPhone 6s真有传说中的16种版本?我们来辟下谣 http://toutiao.com/group/6204322503820214530/ 21、明星官员于幼军为什么去中山大学教书? http://toutiao.com/group/6205060666964541698/ 22、周立波被四川洗碗妹调侃,狼狈不堪! http://toutiao.com/group/6203580947650249217/ 23、杭州1姑娘美发店去黑头,事后店方竟要求按颗收钱 http://toutiao.com/group/6205065125139563010/ 24、风情万种波涛汹涌,但7万人买票却为看她血腥打架、残暴秒杀! http://toutiao.com/group/6204956612790223106/ 25、联合国提升中国会费,究竟有没道理? http://toutiao.com/group/6204539365308432642/ 26、全世界令司机最恐惧的5条道路,最后一个还是人开的么,吓尿了 http://toutiao.com/group/6202673330866471170/ 27、麻醉觉醒:手术刀下的恐怖体验 http://toutiao.com/group/6204576787359269122/ 28、武汉一高校规定中晚餐消费超6.2元取消贫困资格 http://toutiao.com/group/6204872014819852546/ 29、越南留学生写汉字犹如印刷体 网友汗颜 http://toutiao.com/group/6204569047826432257/ 30、山东一年轻少妇,火了 http://toutiao.com/group/6202531725793968641/ 31、喝茶真的会缺钙吗? http://toutiao.com/group/6204943852444385538/ 32、神秘商人徐京华在京被查 http://toutiao.com/group/6205103135601295618/ 33、杭州市市管领导干部任前公示通告 http://toutiao.com/group/6205055568838131970/ 34、大胸美女试衣间的诱惑,把持不住啊 http://toutiao.com/group/6204977924416750081/ 35、亲人出车祸 医生新娘放弃婚礼救人 http://toutiao.com/group/6204958201928335618/ 36、辣妹以为车内没人拉下裙子,结果尴尬了! http://toutiao.com/group/6202696188683550977/ 37、韩国男女主角拍摄激情戏,最后直接撕起来了! http://toutiao.com/group/6202845988550771202/ 38、忘带驾照=无证驾驶?其实并不是,这些情况都不算 ! http://toutiao.com/group/6204937667688743169/ 39、别做声,火车上偷偷排下来的... http://toutiao.com/group/6203301087581766146/ 40、她年仅11岁,全场观众为她唱的这首《天亮了》而彻底疯狂 http://toutiao.com/group/6203621724069184002/ 41、前诺贝尔化学奖得主无钱治病离世 http://toutiao.com/group/6205032693841608961/ 42、《兰亭序》展出一个月!是王羲之的真迹吗? | 故宫镇馆之宝 http://toutiao.com/group/6204938492323021057/ 43、晚清牛人的法国妻子与英国情人差点决斗,他非但不调停反而看热闹 http://toutiao.com/group/6204966250697523458/ 44、与男友共处一晚竟然不碰我还结婚吗 http://toutiao.com/group/6204758369984299266/ 45、哪种女人出轨后比男人更疯狂? http://toutiao.com/group/6205037405421961473/ 46、印度被坑800万美元一辆买韩国自行炮:解放军和巴铁都要笑了 http://toutiao.com/group/6205013418028171521/ 47、中国国防工业惊人能力:一周可生产1万根炮管每月下水1艘护卫舰 http://toutiao.com/group/6205033668799480065/ 48、四川小伙发明自动洗头机:发廊妹要失业了!不比日本发明洗头机差 http://toutiao.com/group/6204935451486306817/ 49、脸红心跳!美女醉酒悲剧傻缺集锦 http://toutiao.com/group/6204972869240766722/ 50、38位现役上将 都是哪里人? http://toutiao.com/group/6204935704891015425/ 51、歼10坠毁飞行员跳伞后步行半小时 借电话求救 http://toutiao.com/group/6204723396066558210/ 52、扒扒10大男星喝醉酒后干的蠢事 http://toutiao.com/group/6204258959777300738/ 53、小苹果落伍了,这才是新神曲! http://toutiao.com/group/6203403900508061953/ 54、全球最恐怖的组织ISIS的首脑是何方神圣 http://toutiao.com/group/6204709742365147394/ 55、牛人用5800枚镜子做成的激光,竟可以击穿铁板! http://toutiao.com/group/6202740688838689026/ 56、东邪黄药师曲子杀人?来看这位牛人唱首歌惊散十万大军! http://toutiao.com/group/6204784307294060801/ 57、我的已婚处女朋友 http://toutiao.com/group/6204998329807618305/ 58、哪位开国中将,救过蒋介石的命,在国民党内潜伏了22年! http://toutiao.com/group/6204988120670732545/ 59、大闸蟹该蒸还是该煮?让我告诉你! http://toutiao.com/group/6203789618635424001/ 60、果敢,至今不肯屈服的明朝故土 http://toutiao.com/group/6204794460595699970/ 61、从耻辱割地喂狼到对方俯首称臣,此煞星让大宋续命好多年! http://toutiao.com/group/6204784663776182530/ 62、璎珞的前世今生 http://toutiao.com/group/6205030889954918658/ 63、不会造血只知道输血:日本的航空工业到底水平如何? http://toutiao.com/group/6205016158216782082/ 64、俄军地面鏖战叙利亚?看普京如何破解这一世界难题! http://toutiao.com/group/6205026513383227649/ 65、实拍:中印两军边境对峙场面!解放军很霸气! http://toutiao.com/group/6203141705638674945/ 66、震惊|爷爷出门买个米,大浒东苑3岁娃从自家16楼坠下,结果 http://toutiao.com/group/6204670314566025474/ 67、拿了诺奖,重庆青蒿素之乡特别失落 http://toutiao.com/group/6204086748768583937/ 68、为人妻!见光死!当年那些火遍网络的校花们,如今都在干啥? http://toutiao.com/group/6204989078449520897/ 69、破产千万富翁逆天演唱《从头再来》,评委都哭了 http://toutiao.com/group/6202875739789214209/ 70、不只有性能出色 899元起高关注手机推荐 http://toutiao.com/group/6204604524257100034/ 71、洗衣粉真能炸油条?这样的都市传说你信过没有 http://toutiao.com/group/6204058659681861890/ 72、三十年前半夜听到亲人听“敌台”,你知道敌台说什么吗? http://toutiao.com/group/6204570594015920385/ 73、大象交配 - 最新野生动物目击 http://toutiao.com/group/6204930211626058241/ 74、“非常重要的刘鹤”作了哪几次重要表态? http://toutiao.com/group/6205092746074849538/ 75、胸大未必真的好,那些大波妹子生活中会遇到的尴尬囧事! http://toutiao.com/group/6203810393395396866/ 76、富三代驾驶兰博基尼专泡名花有主的妞 http://toutiao.com/group/6203838594150154498/ 77、摄影师拍摄整容过程中的韩国女性 http://toutiao.com/group/6204669627370062081/ 78、万一以后再也看不到了这样的10分电影怎么办 http://toutiao.com/group/6204958352252338433/ 79、我家的阳台都用来晾衣服 看了人家的阳台委屈的快哭了 http://toutiao.com/group/6204655668726890754/ 80、陈金彪任浙江省委秘书长:半年内两度履新,曾接受冰桶挑战 http://toutiao.com/group/6204911524224368898/ 81、中石油原副经理王永春一审获刑20年 http://toutiao.com/group/6205072671396741634/ 82、没有逛过这8条街,杭州算是白来了! http://toutiao.com/group/6204562364857254145/ 83、用铅粉美白?古人爱美多误区 http://toutiao.com/group/6204757085789880577/ 84、此诸侯竟敢大战九五至尊的周天子,战斗结果让人大吃一惊! http://toutiao.com/group/6204784006644171010/ 85、国务院批复同意沈阳市政府驻地搬迁,此举曾获中央巡视组肯定 http://toutiao.com/group/6205058145818034433/ 86、视频演示:更易怀孕的同房姿势!有讲究哦! http://toutiao.com/group/6202919359477973505/ 87、17分钟,我哭了1个小时,别心疼流量,都看看吧 http://toutiao.com/group/6202885235963396609/ 88、林子祥演唱会翻唱《海阔天空》,男声里面最温柔有力的版本,必听 http://toutiao.com/group/6204565483004313858/ 89、仿佛李小龙附体,华人小伙球场KO黑人壮汉 http://toutiao.com/group/6203501752747442689/ 90、开挂了!一个视频让你感受下,中国的乒乓球有多牛!全场起立鼓掌 http://toutiao.com/group/6202531661369901314/ 91、浙江未来5年要新建40个以上机场 http://toutiao.com/group/6204591373068943617/ 92、“阔太”李念浴室自拍放送!产后7月减56斤 上围未缩水 http://toutiao.com/group/6204806121431728386/ 93、台湾腔为什么这么娘|大象公会 http://toutiao.com/group/6202158931222642946/ 94、iOS9再坑玩家 苹果竟劝用户放弃存档卸载系统? http://toutiao.com/group/6204700151704682754/ 95、马云的传奇半生录:创业初期开会如传销 http://toutiao.com/group/6204201729338081538/ 96、发改委一日再批六条铁路建设 今年来已批投资破万亿 http://toutiao.com/group/6204990225205428481/ 97、菲律宾南部发现疑似MH370客机残骸 大马展开调查 http://toutiao.com/group/6204563833737134338/ 98、三个风骚服务员让吃饭大哥乐疯了 http://toutiao.com/group/6203644985613042178/ 99、为什么手脚冰凉的总是你? http://toutiao.com/group/6203427381094498562/ 100、英媒:习大大访英,白金汉宫午宴提议多宝鱼遭婉拒 http://toutiao.com/group/6204624878106657026/ 101、基地zuzhi叙利亚分支宣称对俄罗斯火箭袭击负责 http://toutiao.com/group/6205069394336776706/ 102、琅琊榜权力斗争太幼稚,历史上儿子抢父亲皇位可以多残忍? http://toutiao.com/group/6205056152952783106/ 103、被劫持为人质的将军,何以赢得曹操最大的信任 http://toutiao.com/group/6204905519859450114/ 104、中国明星片酬最新排行前十强,男女星第一名各是谁?你绝对想不到 http://toutiao.com/group/6204563399945748738/ 105、男子杀情人放车中.开车接老婆 http://toutiao.com/group/6204746850883207425/ 106、小偷入室盗得鸡血石却不识货 价值几十万的石头被随手埋山里 http://toutiao.com/group/6204849161299706113/ 107、郭德纲徒弟调侃国足引大帝暴怒:不喜欢但请尊重 http://toutiao.com/group/6204642444523143425/ 108、香港商铺租金暴跌40%,名表店变成化妆品折扣店 http://toutiao.com/group/6205057840875667713/ 109、韩国济州岛赌场诱中国赌客:50万换"三线女"陪两夜 http://toutiao.com/group/6204745382003245313/ 110、掌握正确的止血知识,你就可以救人一命 http://toutiao.com/group/6203952466615877890/ 111、LGD四连跪 游戏主播失控怒砸电脑 http://toutiao.com/group/6204601934390477057/ 112、宝宝快速钓鱼 比捞的还快 http://toutiao.com/group/6202929783362797826/ 113、首次曝光!用中国无人机一击命中恐怖分子营地,整个空军都沸腾了 http://toutiao.com/group/6204974166322462978/ 114、西太平洋之鲨:歼-15真的是全盘山寨苏-33吗? http://toutiao.com/group/6204983469222002946/ 115、澳门博彩不景气 赌王何鸿燊之子去俄罗斯开了个最大赌场 http://toutiao.com/group/6205019589895553281/ 116、中国买家要在澳大利亚买下一个“浙江省”,惊动澳国防部 http://toutiao.com/group/6204578848942637313/ 117、念错电影名不只是夏洛特烦恼 http://toutiao.com/group/6204574184608497921/ 118、史上最好用的支架,一次解决苹果三件套 http://toutiao.com/group/6204563550269669633/ 119、恒大球员超市即将开张?来年再签大牌会是谁 http://toutiao.com/group/6204569893936136449/ 120、这个激励了10亿人!当你心情低落时,请看看这群鸭子!太... http://toutiao.com/group/6202880807851557378
相关推荐
在处理数据展示时,滚动分页是一种常见的优化用户体验的方法,它允许用户在滚动页面时动态加载更多内容,而不是一次性加载所有数据。本实例将探讨如何使用JavaScript从JSON数据源中实现滚动分页功能。 首先,理解...
在本场景中,我们将关注如何使用JavaScript从JSON数组中读取数据并生成滚动分页效果。滚动分页是一种用户滚动到页面底部时自动加载更多数据的技术,常见于社交网络和新闻网站。 首先,我们需要理解JSON(JavaScript...
在网页开发中,数据量庞大的页面常常需要进行分页处理,以便用户能够更方便地浏览信息。本知识点将深入探讨“js html动态分页”的原理和实现方法,结合提供的资源——"html自动分页.html",我们将分析如何利用...
在网页开发中,动态生成div框并同时加载数据是一种常见的优化技术,特别是在处理大量数据时。这种方法能够显著提高用户体验,因为它允许数据分批次或者按需加载,而不是一次性加载所有内容,从而减少网络负担和...
在网页开发中,分页是常见的一种数据展示方式,它能有效地管理大量数据,提高用户体验。本资源"jQuery动态生成分页列表代码.zip"提供了一种实用的解决方案,由开发者doorrj2创建,用于实现每页固定数量列表的分页...
在网页开发中,数据分页是一项非常常见的功能,它能够帮助用户更有效地浏览大量信息,而不会一次性加载过多内容导致页面加载慢或者浏览器卡顿。本教程将专注于使用JavaScript库jQuery来实现数据分页显示,涵盖了内存...
在处理大量数据时,分页是一种常见的优化策略,可以提高网页性能并提升用户体验。在这个场景中,我们将讨论如何使用JavaScript从JSON数据源中读取数据,并实现支持键盘和滚轮翻页的功能。 首先,JSON(JavaScript ...
3. 动态分页:一些方法利用JavaScript或者jQuery动态生成分页,例如根据服务器返回的数据自动调整页数。这种方式交互性强,用户体验佳,但需考虑浏览器兼容性。 4. AJAX无刷新分页:通过AJAX技术,用户在切换页面时...
"静态页面js分页实例"是指在不依赖服务器端动态生成的情况下,通过JavaScript在客户端实现分页功能。这种方法提高了页面加载速度,减轻了服务器压力,同时也提供了较好的用户体验。 在JavaScript分页中,我们需要...
JavaScript允许我们动态地生成和更新DOM元素,从而实现页面内容的实时更新。以下是一些使用JavaScript实现分页的关键步骤: 1. 计算总页数:根据数据总数和每页显示的条目数计算出总页数。 2. 创建分页导航:生成一...
在JavaScript和JSON的世界里,"js+json精彩分页"是一个常见的应用场景,特别是在网页开发中。这个主题主要涉及两个核心概念:JavaScript(JS)和JSON(JavaScript Object Notation)。在这个项目中,它们被用来实现...
在没有JavaScript的情况下,通常会通过服务器端生成固定数量的页面链接,但这种方式对服务器压力较大,且不支持动态加载。JS分页通过AJAX异步请求,只获取当前页的数据,减少了服务器的负担,同时也提高了页面的响应...
在网页设计和开发中,分页是一种常见的用户体验优化技术,用于处理大量数据的展示,比如在电商网站的商品列表、论坛的帖子或者社交媒体的动态流中。分页将大量的信息分割成若干个小部分,使得用户可以逐页浏览,避免...
`jspdf` 提供了在浏览器环境中直接处理PDF的能力,允许开发者通过JavaScript生成动态的PDF内容。用户可以使用这个库将HTML元素转换为PDF格式,从而实现网页内容的离线保存或打印。通过调用`jspdf` 的API,可以轻松...
此外,考虑到性能优化,可以考虑在用户滚动到页面底部时动态加载下一页数据,这就是所谓的“懒加载”。 总结,实现HTML5页面在安卓手机端分页显示数据的关键在于合理利用HTML5的响应式设计、JavaScript的Ajax技术...
在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据或内容的展示,以提高用户体验和页面加载速度。jQuery 是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理和动画效果。滑动分页是jQuery分页中...
总的来说,"jquery选项卡图片分组滚动切换带分页的图片滚动切换"是一个综合性的网页开发项目,它涵盖了前端开发中的多个重要技术点,包括用户界面设计、动态效果实现和数据管理。通过实践这个项目,开发者可以提升...
在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据列表的显示。当数据过多,一次性加载全部内容会影响页面性能和用户体验时,分页就显得尤为重要。本篇文章将详细探讨如何使用JavaScript(js)脚本来...
网页分页是网页设计中一个常见且重要的技术,特别是在数据量大、无法一次性展示所有内容时。本程序采用JavaScript实现,允许用户自定义每页显示的条目数量,旨在提供简洁易用的用户体验。以下是对这个分页程序的详细...
通过 JavaScript 动态生成表格可以更加灵活地管理和更新数据。本文将深入分析一个具体的示例,该示例展示了如何使用 JavaScript 来动态生成一个表格,并根据用户的选择进行实时更新。 #### 核心代码解析 首先,...