Ajax爬取实战32课件讲解.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Python爬虫Ajax爬取实战

目录0102030405准备工作爬取目标爬取分析与步骤保存数据任务实现

1、安装好Python3.6版本以上,并能成功运行2、了解Requests库(PythonHTTP请求库)基本用法3、了解Ajax基础知识和Ajax的基本用法准备工作

1、爬取URL:https://spa1.scrape.center/观察:此网站与前期爬取的静态页面呈现的样式是一样的,但后台实现逻辑和数据加载方式完全不同爬取目标电影组成的列表列表页封面电影名称详情页类别上映时间剧情简介数据请求是通过Ajax完成的,页面内容是通过JavaScript渲染

2、爬取目标—爬取这个站点每部电影的名称、封面、类别、上映时间、评分、剧情简介等3、步骤1)分析页面数据的加载逻辑2)用requests实现Ajax数据的爬取3)将每部电影的数据分别保存到MongoDB数据库爬取目标

自己动手做:先用requests直接提取页面观察:结果中有什么?是否有电影信息?爬取分析只能看到源码引用的JS和CSS文件,无任何数据

整个页面都是JS渲染得到的,JS通过调用一些数据加载和页面渲染方法,才最终呈现所看到的的效果,电影信息或数据一般是通过Ajax加载,JS在后台调用Ajax数据接口,得到数据之后,再对数据进行解析并渲染呈现想要爬取这个页面,直接爬取Ajax接口,再获取数据即可爬取分析

1、分析Ajax接口逻辑并实现数据爬取1)分析列表页的Ajax接口逻辑①打开浏览器开发者工具切换到network面板勾选PreserveLog并切换到XHR选项卡爬取步骤

②刷新页面,再单击第2、3、4页,观察数据变化每次翻页出现对应的Ajax请求观察请求详情(请求URL、参数和响应内容变化)URL:Ajax接口请求URL中有两个参数(limit和offset)爬取步骤

总结规律:1)limit一直为10,对应每页10条数据2)offset在依次变大,页数每加1,offset就加10,代表页面的数据偏移量爬取步骤

③观察响应内容切换到Preview选项卡结果为JSON数据,其中有一个results字段,是一个列表列表中每个元素都是一个字典(里面可看到对应电影数据)爬取步骤数据已经非常结构化,正是所需数据结论:只需构造出所有页面的Ajax接口,就可以轻松获取所有列表页的数据!!!

2)爬取列表页①导入所需的库并定义一些配置爬取步骤预留出来变成占位符,可以动态传入参数构造一个完整的列表页URL

②定义通用爬取方法爬取步骤专门用来处理JSON接口传入参数:URL调用json方法可以解析响应内容并将其转化成JSON字符串

③定义列表页的爬取方法爬取步骤全局变量传入参数page通过字符串format方法,传入limit和offset值返回结果是什么?包含电影信息的JSON字符串由于爬取的数据已经是JSON类型,所以无须再去解析HTML代码来提取数据(爬取到的数据已经是我们想要的结构化数据)省略解析!

3)爬取详情页①单击任意一部电影,观察详情页爬取步骤URL发生变化页面成功展示详情页信息

②观察开发者工具又出现一个Ajax请求,URL为https://spa1.scrape.center/detail/30通过Preview选项卡也能看到Ajax请求对应的响应信息观察后发现:Ajax请求的URL后面有一个参数(电影id)是可变的想获取其他电影,只需把URL最后的参数改为对应id即可爬取步骤请求新的URL即可获取相应数据

思考:详情页的数据提取逻辑分析完了,怎样和列表页关联起来?电影的id从哪里来?爬取步骤观察列表页的接口返回数据列表页原本的返回数据中就带有id这个字段,只需拿列表页结果中的id来构造详情页的Ajax请求的URL即可

③定义详情页的爬取方法爬取步骤接收参数id构造详情页URL

4)定义总的调用方法爬取步骤遍历获取页码page传入参数page,得到列表页的数据遍历每个列表页的每个结果获取每部电影id传入爬取每部电影的详情数据

1、存储为JSON格式文本文件保存数据改写main(),在最后一行加上save_data(detail_data)

2、存储到MongoDB前提:MongoDB可以正常连接和使用假设:本地的数据库localhost,端口为27017,无用户名和密码①导入相应库并配置MongoDB保存数据

②定义数据保存方法保存数据上面提取到的电影信息查询条件(根据name查询)表示更新操作实现:存在即更新

文档评论(0)

vermonth155-2娟 + 关注
实名认证
文档贡献者

专注ppt课件

版权声明书
用户编号:8046135067000064

1亿VIP精品文档

相关文档