《数据采集技术》课件-项目四 任务1 使用Ajax实现个人微博的爬取_第1页
《数据采集技术》课件-项目四 任务1 使用Ajax实现个人微博的爬取_第2页
《数据采集技术》课件-项目四 任务1 使用Ajax实现个人微博的爬取_第3页
《数据采集技术》课件-项目四 任务1 使用Ajax实现个人微博的爬取_第4页
《数据采集技术》课件-项目四 任务1 使用Ajax实现个人微博的爬取_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实现个人微博的爬取目录01任务1使用Ajax实现个人微博的爬取02任务2:使用Selenium实现自动化爬取任务一:使用Ajax实现个人微博的爬取

2、掌握Ajax的基本用法1、了解Ajax基本原理任务目标任务描述

有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但是使用requests得到的结果并没有。因为requests获取的都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据后生成的结果。

如果遇到这样的页面,直接利用requests等库来抓取原始页面,是无法获取到有效数据的,需要分析网页后台向接口发送的Ajax请求,如果可以用requests来模拟Ajax请求,那么就可以成功抓取了。任务一

使用Ajax实现个人微博的爬取1.1Ajax概述Ajax全称为AsynchronousJavaScriptandXML,即异步的JavaScript和XML。

它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。

对于传统的网页,如果想更新其内容,那么必须要刷新整个页面,但有了Ajax,便可以在页面不被全部刷新的情况下更新其内容。在这个过程中,页面实际上是在后台与服务器进行了数据交互,获取到数据之后,再利用JavaScript改变网页,这样网页内容就会更新了。实操小任务

打开任意网址并下拉,观察在下拉的过程中网页的变化任务一

使用Ajax实现个人微博的爬取1.2Ajax基本原理

发送Ajax请求到网页更新的这个过程可以简单分为3步:1.发送请求2.解析内容3.渲染网页任务一

使用Ajax实现个人微博的爬取发送请求

JavaScript可以实现页面的各种交互功能,Ajax也不例外,它也是由JavaScript实现的,实际上执行了如下代码:新建XMLHttpRequest对象调用onreadystatechange属性设置监听调用open()和send()方法向服务器发送请求当服务器返回响应时,对应的方法便会被触发,然后在这个方法里解析响应内容任务一

使用Ajax实现个人微博的爬取解析内容

得到响应之后,onreadystatechange属性对应的方法便会被触发:当服务器返回响应时,对应的方法便会被触发,此时利用xmlhttp的responseText属性便可取到响应内容任务一

使用Ajax实现个人微博的爬取渲染网页

解析完响应内容就可以调用JavaScript来针对解析完的内容对网页进行

下一步处理

得到响应之后,onreadystatechange属性对应的方法便会被触发:可以对某个元素内的源代码进行更改,这样网页显示的内容就改变了—DOM操作将ID为myDiv的节点内部的HTML代码更改为服务器返回的内容,这样myDiv元素内部便会呈现出服务器返回的新数据,网页的部分内容看上去就更新了任务一

使用Ajax实现个人微博的爬取1.3Ajax分析方法(需借助浏览器的开发者工具)

首先,用浏览器打开链接/u/1893892941,随后在页面鼠标右键,从弹出的快捷菜单中选择“检查”选项,此时便会弹出开发者工具任务一

使用Ajax实现个人微博的爬取

Ajax其实有其特殊的请求类型,它叫作xhr,我们可以发现一个名称以getIndex开头的请求,其Type为xhr,这就是一个Ajax请求任务一

使用Ajax实现个人微博的爬取用鼠标点击这个请求,可以查看这个请求的详细信息标记此请求是Ajax请求任务一

使用Ajax实现个人微博的爬取

随后点击一下预览,即可看到响应的内容,它是JSON格式的。这里浏览器为我们自动做了解析,点击箭头即可展开和收起相应内容用来渲染个人主页所使用的数据。JavaScript接收到数据之后,再执行相应的渲染方法,整个页面就渲染出来了任务一

使用Ajax实现个人微博的爬取

另外,也可以切换到响应选项卡,从中观察到真实的返回数据任务一

使用Ajax实现个人微博的爬取

切回到第一个请求,观察一下它的Response是什么?这是最原始的链接返回的结果,其代码只有不到50行,结构也非常简单,只是执行了一些JavaScript任务一

使用Ajax实现个人微博的爬取

过滤:利用浏览器开发者工具的筛选功能筛选出所有的Ajax请求在请求的上方有一层筛选栏,直接点击XHR,此时在下方显示的所有请求便都是Ajax请求了任务一

使用Ajax实现个人微博的爬取1.4Ajax结果提取

分析请求

打开Ajax的XHR过滤器,然后一直滑动页面以加载新的微博内容。可以看到,会不断有Ajax请求发出,选定其中一个请求,分析它的参数信息。点击该请求,进入详情页面有变化:很明显这两个参数是用来控制翻页的任务一

使用Ajax实现个人微博的爬取

分析响应

响应内容是JSON格式,浏览器开发者工具自动做了解析以方便我们查看,最关键的那一部分信息就是list微博的总数量,我们可以根据这个数字来估算分页数一个列表,列表中有一个比较重要的字段tag_struct,展开可以发现它包含的正是微博的一些信息任务一

使用Ajax实现个人微博的爬取如何实现翻页

请求一个接口,就可以得到若干条条微博,而且请求时只需要考虑图中所示参数即可。这样的话,我们只需要简单做一个循环,就可以获取所有微博了任

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论