游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Python爬虫抓取动态加载数据

  本节讲解如何抓取豆瓣电影分类排行榜中的电影数据(https:movie。douban。comchart),比如输入犯罪则会输出所有犯罪影片的电影名称、评分,效果如下所示:剧情喜剧动作爱情科幻动画悬疑惊悚恐怖纪录片短片情色同性音乐歌舞家庭儿童传记历史战争犯罪西部奇幻冒险灾难武侠古装运动黑色电影你想了解什么类型电影:犯罪{name:肖申克的救赎,score:9。7}{name:控方证人,score:9。6}。。。电影总数量:302部123456复制代码类型:〔python〕确定网站类型
  首先要明确豆瓣电影网站的类型,即是动态还是静态。检查方法:右键查看网页源码搜索辛德勒的名单关键字,如下图所示:
  最终发现源码页中没有出现想要抓取的数据,只有一大堆的JS代码,由此确定该网站为动态网站。影片详情信息
  接下来,使用快捷键F12打开控制台进行抓包,点击NetWork选项卡XHR选项Preview选项卡刷新当前页面抓取数据包,如下图所示:
  从图2可知,我们想要抓取的数据取全部包含在当前的数据包中。当我们向下滚动鼠标滑轮时,左侧栏内的数据包会实现自动加载,这是使用Ajax异步加载技术实现的。
  通过查看数据Headers选项可以明确url地址、查询参数等信息,如下所示:
  从上图可以得知请求的基准URL(由于还未拼接查询参数,所以称之为基准URL),如下所示:https:movie。douban。comjcharttoplist?1复制代码类型:〔python〕
  继续滚动鼠标滑轮可知查询参数具有如下规律:type:4电影类型intervalid:100:90代表网页上滑动条的百分比(好于10090的历史片)action:空start:0每次加载电影的起始索引值0204060limit:20每次加载的电影数量,1为初始值,后续加载时20固定不变12345复制代码类型:〔python〕
  注意:寻找规律时,后加载出来的数据包会排在最前面,除去第一个数据包外,其余数据包如下所示:影片总数量
  注意:第一个数据包反映了每个类型中电影的总数量,其url与响应信息如下:请求的URL地址:https:movie。douban。comjcharttoplistcount?type4intervalid1003A90Response信息:{playablecount:41,total:104,unwatchedcount:104}12复制代码类型:〔java〕影片类型与类型码
  影片的类型与类型码包含在电影排行榜的主界面中,如下所示:
  分析上述页面结构,然后使用正则表达式来提取想要的数据,并定义选择菜单menu,代码如下所示:importredefgetalltypefilms(self):获取影片类型和类型码urlhttps:movie。douban。comchartheadersself。getheaders()htmlrequests。get(urlurl,headersheaders)。textrebdsrpatternre。compile(rebds,re。S)rlistpattern。findall(html)存放所有类型和对应类型码大字典typedict{}定义一个选择电影类型的菜单menurlist〔{剧情,11},{},。。〕forrinrlist:typedict〔r〔0〕。strip()〕r〔1〕。strip()获取input的菜单,显示所有电影类型menur〔0〕。strip()返回类型字典以供后续函数调用,并返回输入菜单menu{剧情:11,喜剧:24,。。。}returntypedict,menu12345678910111213141516171819202122复制代码类型:〔python〕编写完整程序
  完成上述分析后,下面开始编写Python爬虫程序,代码如下:coding:utf8importrequestsimporttimeimportrandomimportreimportjsonfromuainfoimportualistclassDoubanSpider(object):definit(self):self。urlhttps:movie。douban。comjcharttoplist?self。i0获取随机headersdefgetheaders(self):headers{UserAgent:random。choice(ualist)}returnheaders获取页面defgetpage(self,params):将json转换为python数据类型,并返回htmlrequests。get(urlself。url,paramsparams,headersself。getheaders())。texthtmljson。loads(html)self。parsepage(html)解析并保存数据defparsepage(self,html):item{}html列表类型:〔{电影1},{电影2},{电影3}。。。〕foroneinhtml:名称评分item〔name〕one〔title〕。strip()item〔score〕float(one〔score〕。strip())print(item)self。i1获取电影总数deftotalnumber(self,typenumber):F12抓包抓到的地址,type表示电影类型urlhttps:movie。douban。comjcharttoplistcount?type{}intervalid1003A90。format(typenumber)headersself。getheaders()htmlrequests。get(urlurl,headersheaders)。json()totalint(html〔total〕)returntotal获取所有电影的类型和对应type值defgetalltypefilms(self):获取类型与类型码urlhttps:movie。douban。comchartheadersself。getheaders()htmlrequests。get(urlurl,headersheaders)。textrebdsrpatternre。compile(rebds,re。S)rlistpattern。findall(html)存放所有类型和对应类型码大字典typedict{}定义一个选择电影类型的菜单menuforrinrlist:typedict〔r〔0〕。strip()〕r〔1〕。strip()获取input的菜单,显示所有电影类型menur〔0〕。strip()returntypedict,menu主程序入口函数defmain(self):获取type的值typedict,menuself。getalltypefilms()menumenu你想了解什么类型电影:nameinput(menu)typenumbertypedict〔name〕获取电影总数totalself。totalnumber(typenumber)forstartinrange(0,(total1),20):构建查询参数params{type:typenumber,intervalid:100:90,action:,start:str(start),limit:20}调用函数,传递params参数self。getpage(params)随机休眠13秒time。sleep(random。randint(1,3))print(电影总数量:d部self。i)ifnamemain:spiderDoubanSpider()spider。main()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283复制代码类型:〔python〕
  输出示例:剧情喜剧动作爱情科幻动画悬疑惊悚恐怖纪录片短片情色同性音乐歌舞家庭儿童传记历史战争犯罪西部奇幻冒险灾难武侠古装运动黑色电影你想了解什么类型电影:科幻{name:盗梦空间,score:9。3}{name:星际穿越,score:9。3}{name:楚门的世界,score:9。3}{name:机器人总动员,score:9。3}{name:蝙蝠侠:黑暗骑士,score:9。2}{name:超感猎杀:完结特别篇,score:9。2}{name:新世纪福音战士第0:0话诞生之始,score:9。2}{name:少年骇客:变身之谜,score:9。2}。。。。。。电影总数量:147部12345678910111213复制代码类型:〔python〕
  最后我们对抓取动态网站数据做简单地总结:
  1。确定网站是否为动态网站,通过查看源码搜索相应的关键字即可确定。
  2。动态网站主要通过异步方式加载数据。触发数据加载的JS事件主要有滚动鼠标滑轮、鼠标点击、拉动滚动条等有关动作,也有一些网站通过局部更新的方式加载数据,比如有道翻译案例。
  新闻资讯开课吧广场第1页

重大通知8月2729日蓝装家博会终于入驻厦门啦伴随着国人生活水平的提高,消费升级趋势日益显著,人们对于居家生活品质要求越来越高,也越来越多样。传统型家居卖场销售空间开始面临前所未有的压力与紧迫感,为了紧跟消费者生活方式与理……丰田发布Supra35周年特别版两款车型RMB38。5万起日前,丰田汽车发布了Supra35周年特别版,包含有:SZR35和RZ35两款车型,各限量发售35台。两款新车均具有限量版的车身配色和特殊内饰。新车在日本的售价为653。50万……呼伦贝尔宋Pro店内最高优惠1。0万元,欢迎到店鉴赏刚刚小编在车友圈看到好多朋友都在讨论宋Pro直降10。78,这么诱人的降价幅度,想要购车的朋友们不考虑一下趁机拿下?比亚迪益丰祥泰店,活动时间即日起到09月25日,机会难得,不……iQOONeo3荣耀30红米K30Pro,三千价位这三款手机一,iQOONeo3:6128G版售价2698,8128G版售价2998,12128G版售价3298,8256G版售价3398。要性价比,玩游戏就选iQ……十一大放假比亚迪唐邀您试乘试驾汽车报价早知道:比亚迪益丰祥泰店,唐限时特惠大酬宾,09。2309。23购车优惠1。81,有购车意向的朋友不妨亲自去试驾一下,店铺地址:内蒙古自治区呼伦贝尔市鄂温克族自治旗巴彦……延迟退休!刚刚,人社部公布实施原则,708090后退休刚刚,十四五规划和2035年远景目标纲正式公布,其中关于提前退休改革动向,人社部权威专家给出明确原则!十四五规划和2035年远景目标纲要明确提出,按照小步调整、弹性实施、……康利国际上半年收入增长60康利国际控股有限公司(HK:06890)在其2021年上半年报告中报告称,与2020年同期相比,该公司取得了显著增长。作为中国江苏省家电行业中游镀锌钢材龙头企业,康利报告……Angular性能优化实践巧用第三方组件和懒加载技术应该有很多人都抱怨过Angular应用的性能问题。其实,在搭建Angular项目时,通过使用打包、懒加载、变化检测策略和缓存技术,再辅助第三方组件,便可有效提升项目性能。……颠覆传统之作,加入AI的coKiing空调能否为行业注入全新近几年,智能家电的发展有目共睹,对传统家电行业造成了巨大的影响,智能洗衣机、智能洗碗机、智能冰箱的诞生,让不少用户享受到了真正的便利,而且智能家电价格方面也越来越亲民,成为了不……权威解读企业网络危机公关负面处理的方法大家好,我是只为用户提升品牌价值的时代达信互联网的快速发展,人们日常生活、企业发展都是已经离不开互联网,而对于企业的发展来说,更是借助互联网趋势,运用好媒体平台来传播品牌……威泽HE01这条塞子,诚意十足之余,更有两副不同面孔《战狼2》这种片子,早先我是真看不下去,太扯了因为,不过这一年下来,先是渔村那些破事儿,听着钢铁洪流进行曲看过阅兵,再经历新冠,此时脑子里的想法已经有了变化,反而真的就能平起平……德国Balda公司为美国制造的ArgusInstantLoa一直持续看我文章的各位同好应该都知道,我对各种贴牌生产的相机有着很大的兴趣,并坚持不懈地搜猎中。今天介绍的这款旁轴相机,就属于这个范畴,是德国巴尔达Balda公司在上个世纪60……
iPhone官方产品类型大全,确保你买的正品零售机?零售机官方渠道购买的正品。官换机Apple售后换机后的产品(活跃设备),保修继承原始设备。BS机又名:资源机,购买日期:19780401,二手无保……杭州健澜科技有限公司病理人工智能诊断云阅片机器人现状和展望全切片数字化图像(wholeslideimages,WSI)的出现不但使病理切片的获取更加方便,更重要的是改变了传统的阅片方式。随着数字病理切片在病理诊断中的应用,大量定量分析……美消费者报告称Model3刹车表现极差,马斯克火速回应众所周知,美国权威杂志《消费者报告》(ConsumerReports,以下简称CR)一向以中立测评闻名。作为一家历史悠久的独立非盈利性组织,CR的评测不看任何企业的脸色行……很多人不喜欢曲面屏,却偏偏出现在高端手机上很多人不喜欢曲面屏,却偏偏出现在高端手机上!在三星第一部曲面屏出现的时候,惊艳了很多人,那年冬天,我当时第一时间到店里体验了一下,打开屏幕一瞬间惊艳到我了,两边摸起来触感……数字赋能办公生态2020鹏博士云办公系列产品线上发布会2020年7月30日鹏博士企业云网事业在线上直播举办了数字赋能办公生态为主题的2020鹏博士云办公系列产品线上发布会。正式发布企业智能办公生态下企业物联资源整合服务平台及云办公……腕上私语华为手环B3手环功能简析华为B3手环也算是今年华为重量级的穿戴设备了,主体金属锻造,巧妙的将智能手环和蓝牙耳机创造性的结合在了一起,这一点颇受商务人士的喜爱,那么华为B3有哪些功能呢?华为B3手环最牛……充电宝级荣耀note10,搭载5000mah电池震撼来袭?感谢大家收看这期要倒不倒的徐一咯聊机给大家带来的荣耀note10最新消息。根据荣耀手机官方微博最新消息5000这数字史无前例很明显,荣耀Note10将会搭载5000……不愧是马自达!造新能源汽车,直接跳过EV纯电做新能源汽车,如今已经是各大车企的共识,其中又以纯电汽车为主,例如特斯拉、比亚迪以及大众ID。系列等等。马自达似乎对这事儿比较冷感,继SkyActivX压燃发动机后,即将推出的……平价USB耳机新选择雷柏VH520虚拟7。1声道游戏耳机2020年了,几乎主流的游戏耳机都摒弃了传统的双3。5MM接口转向了内置声卡的USB接口,给玩家提供了更好的声音环境,提高了游戏体验。雷柏面向入门级市场也推出了VH520虚拟7……不抱怨第七天每日箴言不要抱怨世界怎么怎样,关键在于自己本身我总是过着一种苦行僧一般的生活,感觉这样严格要求自己,世间所有的问题都会离我而去,因为我已经这么自律,那所有的问题都应……科普文中望电磁仿真在射频识别(RFID)领域的应用今天跟大家介绍一下中望电磁仿真在射频识别(RFID)领域的应用。本文主要分为3个部分,RFID的背景知识、ZWSimEM在RFID领域的主要应用以及案例演示。RFI……Soul创始人携Soul探索元宇宙前沿社交理念引领社交潮流2021年,元宇宙一词热度高居不下,并迅速登上了年度关键词的宝座。Soul是国内一款人气社交应用,Soul创始人凭借前卫的思想和独到的眼光将Soul打造成了专属于Z世代的线上乐……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网