上回我们说到Python大星
在“试炼之路”历经九九八十一难
披荆斩棘
终于“立地成佛”
恭喜FPX成功夺取S9总决赛冠军
说错了!!!
恭喜Python大星晋级为“五星爬者”
掌握好基本功,Python大星开车带你飞...
作为一名合格的“爬者”
我们要对浏览器功能如数家珍
以“今日头条” 主页为例
右键“审查”元素
Elements 选项卡中便会观察到网页的源代码
右侧便是节点的样式
Network 选项卡
这里是在页面加载过程中浏览器与服务器之间发送请求和接收响应的所有记录。
记录中Type类型为xhr是Ajax请求
Ajax的核心是XMLHttpRequest对象
简称xhr
come on!跟我单击第一条链接...
这是页面的原始的链接
在右侧可以观察到其
Request Headers、URL 和
Response Headers 等信息
切换到Response选项卡
Python大星发现一个奇怪的现象:
显示的html代码并不是全部页面本身
原来这里就是用到了Ajax
其原理:
● 发送请求
● 解析内容
● 渲染网页
我们可以通过选中XHR选项来筛选Ajax请求的数据
在浏览器右侧Preview选项中
可以查看Ajax请求返回的处理过的内容,
比如Json格式展示的数据
可以展开方便查阅
Response选项:响应信息面板包含资源还未进行格式处理的内容,不能显示图片
网页中有很多场景使用了Ajax请求
Python大星带你玩转Ajax
进入Python大星头条主页
在“文章”选项栏中
我们可以看到Python大星的历史文章目录
我们往下翻阅
你会发现下面这一amazing现象
爱的魔力转圈圈。。。加载中。。。
用我上面传给你的“内功”去审查网页
你就会发现头条“文章”加载的重大秘密
文章,没有cue你,收敛点
看这里
参数page_type、user_id以及count是固定不变的
每次加载文章20条
变化的是max_behot_time、as以及cp
念我Python大星纵横“爬者大陆”,
不禁感慨
这就是大厂和小厂的差距,细节决定胜负
首先看max_behot_time
我怀疑你是个时间戳的亚子
果然,不出我Python大星所料
第2条链接中max_behot_time的值
就是第20篇文章的
发布时间(即第1条链接最后1篇文章的发布时间)
接下来,看as和cp
它哥俩除了前面几个字母保持一致
似乎没什么规律
我们知道网页一般是
由HTML+CSS+JS组成
真相必然隐藏在JS中
Python大星为你揭开这层神秘的“面纱”
如果你想知道
这串神秘的数字是怎么来的?
看过来
我已为你转换为Python代码
输出函数可得到
{'as': 'A1455D8C1C1124F', 'cp': '5DCC21D2440FEE1'}
Python大星被头条“调戏”了
这as与cp哥俩参数
竟然不传也能获取数据!!!
格式化输出结果: