文档章节

如何抓取Js动态生成数据且以滚动页面方式分页的网页

烤猪佩奇
 烤猪佩奇
发布于 2016/02/29 17:21
字数 3556
阅读 34
收藏 0

当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢?

如类似今日头条这样的网站:http://toutiao.com/

我们可以使用Selenium来搞定这件事情。Selenium的设计目的虽然是用于Web应用程序的自动化测试,但是却非常适合用来做数据抓取,可以非常简单地绕过网站的反爬虫限制,因为Selenium直接运行在浏览器中,就像真正的用户在操作一样。

使用Selenium,我们不但可以抓取Js动态生成数据的网页,而且可以抓取以滚动页面方式分页的网页。

首先,我们使用maven引入Selenium依赖:

?
1
2
3
4
5
< dependency >
     < groupId >org.seleniumhq.selenium</ groupId >
     < artifactId >selenium-java</ artifactId >
     < version >2.47.1</ version >
</ dependency >

接下来就可以写代码抓取了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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、基地组织叙利亚分支宣称对俄罗斯火箭袭击负责 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/

本文转载自:http://blog.csdn.net/cjaver/article/details/49233147

共有 人打赏支持
烤猪佩奇
粉丝 18
博文 46
码字总数 6583
作品 0
广州
高级程序员
如何抓取Js动态生成数据且以滚动页面方式分页的网页

当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网站:http://toutiao.com/ 我们可以使用Sel...

杨尚川
2015/10/13
3.9K
7
java抓取动态生成的网页--吐槽

最近在做项目的时候有一个需求:从网页面抓取数据,要求是首先抓取整个网页的html源码(后期更新要使用到)。刚开始一看这个简单,然后就稀里哗啦的敲起了代码(在这之前使用过Hadoop平台的分...

开源oschina
2014/10/16
0
0
手把手教你写网络爬虫(1):网易云音乐歌单

原文出处:拓海 大家好,《手把手教你写网络爬虫》连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意。本文由浅入深的把爬虫技术和...

拓海
04/27
0
0
网页抓取/数据抽取/信息提取工具包MetaSeeker的翻页抓取原理

目标网站上内容很多时会用多个页显示,网页抓取/数据抽取/信息提取工具包MetaSeeker能够翻页并提取每一页的内容,目标网站上展现多页的方法有多种: 1,页面上每一页用另外一个URL地址表示。...

Fuller
2009/08/25
0
0
2011年12月最新JQuery插件汇总

jQuery的工具提示插件 Tipped jQuery表格插件 colResizable jQuery虚拟键盘插件 jQuery keyboard Minimit Gallery 用于显示相册、幻灯片、卷帘等效果 jQuery 幻灯效果显示插件 Diapo jQuery...

晨曦之光
2012/02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习设计模式——命令模式

参考博客 1. 认识命令模式 1. 定义:将一个请求封装成为一个对象,从而可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,并支持可撤销操作。 2. 组织结构: Commond:定义命令的...

江左煤郎
13分钟前
0
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
6
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
0
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
0
0
JAVA 内存回收

参考:https://www.cnblogs.com/leesf456/p/5218594.html 1,JMV 中哪些可以作为 GC Root? 1. 虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。 2. 方法区中的类静态属性引...

Carlyle_Lee
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部