有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是经过 Javascript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的, 可能是包含在 HTML 文档中的,也可能是经过 Javascript 和定算法计算后生成的 对于第一种情况,数据加载是一种异步加载方式,原始的页面最初不会包含某些数据,原始页面。加载完后,会再向服务器请求某个接口获取数据,然后数据才被处理从而呈现到网页上,这其实就是发送了一个 Ajax 请求。 照Web 发展的趋势来看,这种形式的页面越来越多 网页的原始 HTML 文档不会包含任何数据,数据都是通过Ajax统一加载后再呈现出来的,这样在 We 开发上可以做到前后端分离,而且降低服务器直接渲染页面带来的压力。所以如果遇到这样的页面,直接利用requests 等库来抓取原始页面,是无法获取到有效数据的,这时需要分析网页后台 接口发送的 jax 请求,如果可以用 requests 来模拟 Ajax 请求,那么就可以成功抓取了。 所以,本章我们的主要目的是了解什么是 jax 及如何去分析和抓取 Ajax 请求
Ajax ,全称为 Asynchronous Javascript and XML ,即异步的 Javascript XML 它不是一门编程 语言,而是利用 Javascript 在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。 对于传统的网页,如果想更新其内容,那么必须要刷新整个页面,但有了 Ajax ,便可以在页面不被全部刷新的情况下更新其内容 在这个过程中,页面实际上是在后台与服务器进行了数据交互,获取到数据之后,再利用 Javascript改变网页,这样网页内容就会更新了。
- 我们以CSDN为例子,点击Python,我们向下拉取页面,数据会不断的更新有新的内容,这就是Ajax。
- 我们注意到页面其实并没有整个刷新,也就意味着页面的链接没有变化,但是网页中却多了新内容,也就是后面刷出来的新微博,这就是通过Ajax获取新数据呈现的过程
我们以前面的CSDN为例,知道拖动刷新的内容由Ajax加载,而且也没的URL没有变化,那么应该到哪里去看这些Ajax请求呢?
- 1.右击点击检查
- 2.点Network
- 3.点击XHR会呈现出XHR数据
- 4.向下滑动,会有一条条XHR数据更新,这样我们就可以捕获到所有的 Ajax 请求了
需求:爬取肯德基餐厅查询,指定地点的餐厅数量。 网址:http://www.kfc.com.cn/kfccda/storelist/index.aspx
- 1.我们可以看到页面是一个text,不是json
- 2.看到所需的参数
代码实现:
需求:爬取国家药品监督管理局中化妆品生产许可信息管理系统服务平台,其中每个企业的详细信息。 网址:http://scxk.nmpa.gov.cn:81/xk/
- 可以发现这是一个json动态页面
- 我们随意点击进入一个企业,可以发现网址的区别只是后面id不一样
- 并且可以看到他所需的参数
代码实现:
以上就是本篇文章【(五) 爬虫教程 |Ajax 数据爬取】的全部内容了,欢迎阅览 ! 文章地址:http://zleialh.tongchengxian.cn/news/707.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 通成线资讯移动站 http://zleialh.tongchengxian.cn/mobile/ , 查看更多