文章插图
在第一篇文章中 , 我总结了最近学到的利用requests和bs4第三方库共同作用 , 基本可以应对python获取静态网页数据的相关问题 。但是如果现实中的网页往往比想象中复杂的多 , 网页也早已不再是纯静态网页 。
就比如在第一篇文章中爬取的网易云课堂计算机专业大学课程中 , 如果我们进一步爬取计算机专业可以就业的岗位信息时 , 通过开发者工具 , 我们发现 , 我们所需要的数据位于id=”j-smartSpec” 的div中 ,
然而 , 我们利用之前的方法进行会发现最后得到的list为空 , 那么我们检查一下源代码 , 好不容易找到了意料之中的标签id , 但是我们惊奇的发现 , 里面什么都没有呀:
好气呀!~可是对于渴望获取想要的数据的决心 , 我们当然要有一探究竟的耐心的啦~经过多种方式 , 我们肯定会了解到这是AJAX在捣鬼 , AJAX 是一种用于创建快速动态网页的技术 。这种技术使我们可以通过在后台与服务器进行少量数据交换 , 从而使网页实现异步更新 。这意味着可以在不重新加载整个网页的情况下 , 浏览器可以对网页的某部分进行更新 。
此时想要获取数据 , 就要考虑它是通过什么传递新的信息给我们 。
实际就是python对动态网页、异步加载的爬取 。
————————————————————————————————真^分界线
以上引出本文的主题 。
正文
一、方法分析
其实任何动态产生的内容 , 要么是本地计算 , 要么是从服务器获取的 。前者看js , 后者需要抓包 。而后者经常配上各种参数加密 , 不过既然浏览器能正确发送参数 , 那么就证明肯定有办法模拟(当然不容易) 。如果有能力 , 模拟发包 。如果嫌麻烦 , 用现成的包来模拟操作浏览器 。
那么通常来讲 , 获取动态数据有两种思路或者说是方法:
1. 分析页面请求 2. 利用selenium模拟浏览器行为或其他抓包工具直接获取(比较暴力有没有)
效率最高的就是分析出请求数据的URL 一般都可以 而selenium 实在没辙的时候再用 。
本篇文章也仅对第一种方法进行介绍(当然是要实货 , 不动手是没有用滴) , 若之后几天仍然很闲 , 会继续介绍下一种方法
二、开始战斗(目标:股票|上海证券交易所)
说了半天 , 总算要开始了 。一年之计在于春 , 一天之计在于晨 。
我们起码要先确定一个方向 , 看了一下目标页面:
有用的就是公司代码 , 公司简称 , A股代码 , A股简称以及A股总资本和A股流通资本这几项 。
所以我们的目标就是爬它30页 , 这些信息全部都要 。
三、寻找数据位置
还是以前的基本思路 , 首先在页面找准数据位置检查 , 找到标签所在位置 , 在前言中我们大概也有了些许经验 , 这时我们试探地打开源代码 , 这次看到什么都没有似乎也不那么生气了~
接下来是没有介绍过的东西!!即分析出AJAX加载出的文件是哪一个:
如图 , 在开发者工具Network中的JS中分析 , 如果感觉实在太多文件不好分析 , 那么我们发现上面有上市A股点击会小范围刷新的现象 , 最终可以完全明确目标
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 蓝牙4.0和5.0音质的区别 蓝牙4.0传输距离
- 华为手机不弹出usb授权 华为手机怎么连接电脑数据传输
- php返回json数据交给js php返回json数据
- php json转数组 php数组转json字符串
- php解析json数组 php解析json数据
- ipad和windows电脑传输 怎么把电影放到ipad里
- ftp登录方式 ftp是什么传输
- msata和sata的速度 什么是M.2,U.2,SAS,SATA,mSATA?这些电脑接口哪一种传输更快
- ajax请求的五个步骤 ajax实现局部刷新