四时宝库

程序员的知识宝库

趣说Python爬虫06--Ajax数据爬取头条主页文章


上回我们说到Python大星

“试炼之路”历经九九八十一难

披荆斩棘

终于“立地成佛”

恭喜FPX成功夺取S9总决赛冠军

说错了!!!

恭喜Python大星晋级为“五星爬者”

掌握好基本功Python大星开车带你飞...

作为一名合格的“爬者”

我们要对浏览器功能如数家珍

以“今日头条” 主页为例

右键“审查”元素

Elements 选项卡中便会观察到网页的源代码

右侧便是节点样式


Network 选项卡

这里是在页面加载过程中浏览器与服务器之间发送请求和接收响应的所有记录。

记录中Type类型为xhr是Ajax请求

Ajax核心XMLHttpRequest对象

简称xhr

come on!跟我单击第一条链接...

这是页面的原始的链接

在右侧可以观察到其

Request HeadersURL

Response Headers 等信息

切换到Response选项卡

Python大星发现一个奇怪的现象:

显示的html代码并不是全部页面本身

原来这里就是用到了Ajax

其原理:

发送请求

解析内容

渲染网页

我们可以通过选中XHR选项筛选Ajax请求的数据

在浏览器Preview选项

可以查看Ajax请求返回的处理过的内容,

比如Json格式展示的数据

可以展开方便查阅

Response选项:响应信息面板包含资源还未进行格式处理的内容,不能显示图片

网页中有很多场景使用了Ajax请求

Python大星带你玩转Ajax

进入Python大星头条主页

“文章”选项栏中

我们可以看到Python大星的历史文章目录

我们往下翻阅

你会发现下面这一amazing现象

爱的魔力转圈圈。。。加载中。。。

用我上面传给你的“内功”审查网页

你就会发现头条“文章”加载的重大秘密

文章,没有cue你,收敛点

看这里

参数page_typeuser_id以及count固定不变

每次加载文章20

变化的是max_behot_timeas以及cp

念我Python大星纵横“爬者大陆”,

不禁感慨

这就是大厂小厂的差距,细节决定胜负

首先看max_behot_time

我怀疑你是个时间戳的亚子

果然,不出我Python大星所料

2条链接中max_behot_time的值

就是第20篇文章的

发布时间(即第1条链接最后1篇文章的发布时间)

接下来,看ascp

它哥俩除了前面几个字母保持一致

似乎没什么规律

我们知道网页一般是

HTML+CSS+JS组成

真相必然隐藏在JS

Python大星为你揭开这层神秘的“面纱”

如果你想知道

这串神秘的数字是怎么来的?

看过来

我已为你转换为Python代码

输出函数可得到

{'as': 'A1455D8C1C1124F', 'cp': '5DCC21D2440FEE1'}

Python大星头条“调戏”了

ascp哥俩参数

竟然不传也能获取数据!!!

格式化输出结果:

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接