拍伞爬虫教程第九天,爬取股票数据,哈喽大家好呀,我是钱新手必看的爬虫实操教程今天来了,今天教大家获取某网股票数据,这是我们的目标网站, 我们的核心需求是提取股票代码和股票简称两个关键字段,如果要获取其他字段,可按同样的方法提取。这里需要注意,本视频仅用于学习分享,不涉及任何商业用途和规学习, 接下来我们一起来动手实操一下吧。首先定位到目标数据包,打开目标网站,鼠标右击页面的空白处,选择检查选项,在弹出的工具中切换到网络选项卡,刷新网页,让工具抓取所有的网络数据包。 刷新后会出现大量的数据包,这里教大家一个快速定位的技巧。在工具搜索框中输入一个股票数据,比如股票代码三零幺六八二,即可快速定位到目标数据包,无需逐个翻涨。 找到目标数据包后,鼠标右击选择复制,选择 c u r l bash 的 格式复制,然后打开 c u r l 转 python 的 代码,网站粘贴内容,一键转换 即可得到可直接使用的 python 代码,无需手动编辑。接着打开拍唱,粘贴转换好的 python 代码。该数据包返回的是 json 格式数据, 理论上通过响应对象去调用点接收方法即可转换为字典,方便取值,但运行后会出现了报错。 报错原因也很简单,返回的不是标准的接收格式数据,查看响应数据会发现 外层多了一串多余的字母,而标准的接收格式得要用大括号或者中括号给它包裹起来,这就是报错的核心原因, 这里提一个避坑的小技巧,找到代码中的 url 链接,删除 url 中携带的 call back, 等于接宽瑞这一串字母串参数,重新逆行代码。 这样操作后,服务器返回的就是标准的接收格式,数据调用点接收方法,即可顺利地转换为字典,避免报错。进入到下一步操作, 将接收数据转换成字典后,我们需要层层提取目标信息,观察数据结构,可以发现 核心数据嵌套在 data 这个键中。提取步骤如下,首先从外层字典中通过 result 键获取对应的值,再从中通过 data 这个键获取包含股票信息的列表, 这个列表中的每一项都是一个字典,代表一只股票的具体数据。接下来我们使用循环便利这个列表, 在每一次循环中,利用 name 这个键提取股票简称,利用扣的这个键提取股票代码。最后通过 print 语句输出,即可拿到我们需要的结果。这里需要提醒一下, 若需要提取其他字段,如同比增长、净利润等,无需重新操作,找到对应字段的键名, 按上述方法提取即可。那今天的实操就到这里了,下一期将讲述如何把抓取到的股票数据保存到 excel 表格中,方便后续查看和整理,我们下期见。
粉丝4.8万获赞9.7万

无论是预约抢购还是爬虫批量下载,我们都绕不开第三登陆,那么我们怎么样来通过协议爬虫的方式来快速实现账号的登录呢?今天就带大家来实战一下安排, 如果你也对前端逆向攻防感兴趣,老何我专门给大家准备了爬虫逆向实战的一个直播课,拆解目前市场主流的一些前端加密技术,还配套录制了全套的逆向入门学习视频,大家记得在粉丝群里面来进行获取,然后在这里话是要做一个登录,有个登录,来我们试一下啊,来输一个账号,然后输入一个密码,我们看一下,来点击登录,我们使用鼠标右键 点击检查,打开开发工具,然后在开发者工具当中啊来勾选到我们的这个到叉 hr, 因为像这里给大家讲一下,因为我们当前请注意啊,我们在什么情况下使用叉 hr 呢?对吧?可能会有些同学不太理解啊,给大家讲一下, 就是你可以看到当我在页面当中来点击登录的时候,它的页面是没有存在的,也就是说它里面的 dom 没有进行重新刷新, 对吧?他只做了一件事情,就是直接产生的一个动态接口来进行对后端来进行提交我们的账号的密码,那么像这种他大多数啊都是为我们的阿贾克斯或接宽瑞等相关的一个动态请求,那么在这种情况下,我们是可以直接在下方啊去勾选这个叉 hr, 对 吧?就是来抓他这种动态的数据包, 要把这个地方大家稍微注意一下啊,要把注意一下,然后我们像在这里,你看我们点击登录来点,当我们点击登录之后,你看像在下面,他是不是就给我们产生了一个动态的一个接口,在这个接口里面我们可以看到我们当前的密码在传输的过程当中是加密的,是一个加密的,我们当前这个密码是属于一个密文传输,对吧?一个密文传输, 那么我们在这里我们相当于说白了,我们就是需要来做一个逆向登录,那如果我们需要来做逆向登录的话,我们就要来模拟它的加密内容,对我们的密码来进行加密,因为在服务器端它所接收的密码是一个密文的,啊, 啊,请记,请注意啊,就是我们直接传明白的话,会导致我们请求服务器端会直接请求失败,所以在这个地方大家千万要多注意一下,明白吗?要多注一下, 好,那么在这里我们先来看一下,我们来分析一下这个网站,对吧?分析一下这个网站,看一下它的难度怎么样? ok, 那 么我们一般遇到加密的时候,我们第一反应是干什么,是吧?我们是要去做加密定位,那如果我们要做加密定位,对吧?有朋友想搜索一下, 对吧?非常棒,对吧?你们要记住啊,一般我们像在这里,如果说我们有看到像他这种,对吧?遇到加密的时候啊,我们的第一反应,我们是可以去尝试去搜索的,到,你看可以直接搜索,对不对? 那么在搜索的时候像这种它是 word, 它是比较泛的,那么我们有没有更好的方法嘞?对吧?我们还可以搜什么?就是关键字搜索法,对吧?它除了搜它对应的关键字,我们还可以搜索,比如像 int, 是 吧? int, 因为像 int 的 话,它是不是一个什么加密,对不对?对吧? int 是 不是加密?我们相当于自己去进行搜索, int 的 时候,我们有可能这个地方它的加密位置,对吧?也就是我们所需要的, 对不对?我们可以去尝试一下点击跳转,然后当我们跳转的时候,我们可以来打一个断点,它在这个地方会有调用我们当前的 intrap, 然后里面有个返回,对不对?我们打一个断点给它,我们来尝试一下,看一下当前这个 intrap 这个位置啊,它是否返回的是我们的加密的内容?来我们点击登录,点击登录, 不是,是吧?不是?好,那如果说他不是的话,那么在这里我们就发现我们通过关键字搜索法的话,就搜索不到,对不对?那么搜索不到,那么我们就要换一种方式,我们就来点击他后面的这个启动器,在他的启动器当中我们是可以看到有一个叫做请求调用归战, 对吧?这个请求调用堆栈是什么呢?对吧?我给大家讲一下啊。首先它这个只是属于请求的一个调用堆栈啊,说白了就是我们当前的这个接口在请求服务器之前需要经过一些 g s 函数或方法的处理,对吧?那么在这个时候,那么你看啊,就是你看当前接口在请求服务器之前,它是需要再经过一些 g s 的 函数或方法的一些处理的,那么这里对它来处理的这些 g s 函数和它的方法,说白了就是它的堆栈, 明白吗?这就是它的堆栈,所以你可以看到其实非常简单的,对不对啊?稍等一下,各位,我给大家发个福袋, ok, 那 么像在堆栈的体系里面,它会有一个比较复杂的逻辑,也就是目前在我们经常在做逆向的过程当中,经常会遇到的就是 promise 点 z, 对 吧?我们经常会遇到 promise 点 z, 那 么我们像如果说有遇到类似于像这种 promise 点 z, 这个叫什么?这个叫做 e 不 回调,对吧?它是一个 e 不 回调,对吧? e 不 回调就是说它里面可能会去回调多个方法来执行对应的任务,对吧?根据啊,你可以理解为是根据 对应的呃条件来执行对应的方法,那它是这么一个逻辑,就是有专门的方法来对它进来服务来进行回调,那是有这么一个逻辑,然后你可以看到,你看我们在当前的这个请求的调用堆栈这里,它是不是就存在一个像这种 promise 点 g, 看到没有, 是不是就会有一个 pos 点自己动一步?然后其次,我们当前的浏览器有我们所呈现的这个面板,他是从下到上的,也就是当前这个匿名这个地方是属于他当前的请求,你可以理解为就相当于是他请求的最后一个赞,当然他后面肯定还有啊, 但是我们根据当前的面板所观察到的,对吧?你可以理解为这个就是他的最后一个赞。那么我们做逆向是什么呢?我们做逆向,我们是要从上到下, 对吧?跟浏览器的执行顺序是反着来的,明白吗?反着来的,那么我们的这个步骤我们就叫做跟站,对吧?跟站或者说叫做堆站调试,明白吗?堆站调试或跟站,对吧?这就是呃,目前的第二种调试技巧。 朋友们,那么像在这里,你看我们现在我如果发现这里面有 pos 点 g 的 情况下,我该怎么做 啊?有没有同学知道的?我看一下大家有没有学,越学越回去啊?当我们如果说在调试我们的堆栈的过程当中,就是仅用这里,对吧?我们发现它里面竟然会有这种 pos 点进,而且它前面是比较相近的情况下,我们的第一反应就是先, 哈哈,硬着头皮分析是吧?正常的逻辑来讲,我们是应该先去看一下我们当前的加密是否由这个回调来进行生成,对不对?先进入一步,看一下 加密的内容是否由,对吧这个一步进行构成,是的,先进入一步,对吧?听风同学非常棒啊,听风同学看学的还是非常扎实的啊,学了很久了,对吧? 好,那么在这里你看我们遇到这种情况,你看我们就可以先进入到它的前面一个堆,你看有个 s 一 点 request, 我 们点过去,然后打上一个断点,然后当我们打上一个断点之后,我们将在页面当中点击登录,你看点击, 那么当我们点击登录的时候,他会在这个地方给我们来进行断点,然后断点之后我们不用去管代码,请朋友们记住啊,就是我们在调试的过程当中,我们不需要花费很多的时间去观察,呃,这个代码是干嘛的是没有必要的,我们重点的核心是看当前的调试面板, 在当前的调试面板当中,我们是可以看到,你看在这里他会有一个域名,你看你可以看下面的这个 base url, 或者说看这个 url 是 不是当前的请求接口的路径, 是吧?然后上面这个是不是他的域名,对吧?他的域名你可以看到在这里他会有一个,这个叫什么?这个叫做请求对象,那么在当前的请求对象当中,我们可以去观察一下它里面有没有我们要的,好像没有, 我们看一下 u l, 我 们在我们的控制台里面可以去输出我们的 i 点 u l, 那 么在当前的 i 点 u l, 大家有没有发现就是我们当前哦,其实上当前的 pass word 这个密本啊,是已经处于生成好的状态, 对不对?那么我们就可以证明一件事情,我们当前的加密内容不是由异步回调来进行构成, 是不是啊?朋友们,这地方大能跟得上吗?能不能跟得上? ok, 那 么在这里记住这个异步是非常重要的,可能现在很多朋友说实话,可能有些同学之前有学过,很多同学觉得有点难,请记住,目前在市场像这种异步调试,将近可以解决我们百分之八十的加密定位的问题, 哼哼,对吧?目前在市场我可以明确告诉各位,就是我们目前做加密定位这种问题啊,我们将通过堆栈调试的分析方式,我们将能解决百分之八十的网站,那包含国内的基本都是 ok 的。 你像目前在市场,你像五 s 盾或者像阿卡曼这些技术,其实说实话它其实都是可以通过它来进行加密定位的一个确定的, 那么你像一些特殊的,比如说像瑞数,那么像这种我们可能就需要用后缀,是吧?可以用后缀,然后像 gsp, 我 们可能就会用到条件叉装,所以啊,它有很多技巧,里面还有很多技巧。 好,那么我们来看,那么如果说在当前这个地方,你看就是我们在当前所打断点的这个地方,就是在进行异步回调之前,我们的加密已经生成,那么怎么办?我们只需要向上推,一个一个推就可以了,你看往上点击,对吧?往上推,你看往上推, 那么在往上推的过程当中,我们会发现在这个地方,你看就是看作用域,有没有发现在作用域当中他单独的出现了一个变量,包含我们的密文。记住哦,出现这几种情况,你们就要停住你们的调试逻辑,就要去看一下代码了,出现哪些情况呢?第一个出现名门, 对吧?第二个单独的某一个对象或变量有进行密文的赋值, 对吧?某一个对象或变量它有进行了我们的一个密文的赋值,那么在这种情况下,我们就需要去观察一下我们的代码,那么你看像当前,你看它这里是不是出现了一个一,有个一变量,这个一变量它里面包含的是不是我们的密文? 这是我们输入的密文,对吧?那么在这种情况下,你们就不要继续向上一步了,没有啊,就直接去看一下当前的代码,观察一下当前的一在哪里, 那么我们可以看到朋友们当前的一在哪里?它是一个什么?它是一个参数,对吧?它是一个行参啊,我们可以理解为它是一个行参,那么如果说它是一个行参,那么我们先在这个地方,我们是不是可以继续向上一步, 对不对?我们可以向上一步,我们去观察一下,你看向上一步走一个 h, 那 么当我们从事在这个地方进行上一步之后,大家请看我们在这个地方是不是它的入参的位置, 那么当前他入仓的位置是由这个 y 值来处理了我们里面的铭文密码,然后变成密文,对不对?你看那么这个地方是不是就是当前的加密的位置,你看 是吧?中间是铭文密码,你看这里我们很明显的可以看到他就是通过这个 y 方法,由这个 y 方法来对我们当前的铭文来执行加密,然后输出这么一堆密文, 我们是不是就找到它了,对不对?我们是不是就找到它了?然后当我们找到它之后,那么现在我们将进入更难的一个步骤,就是做代码逆向分析,对吧?看一下它是否为我们的标准算法以及标准算法的定义到底是什么,我们来看一下。 ok, 那 么在这里当前这个 y 方法是不是我们主要的加密方法,我们可以点过去,其实我们点过去的时候,大家有没有发现当前的 y 方法的话,是比较直接的,直接在上面有等于进行复制 w 点 s m i, 点 do int 来进行了一个加密,那么像 s m i 是 什么算法,有朋友知道吗? 有朋友说是国密,对吧?哦,国密是没有问题的啊,但是跟大家讲一下,一般正常划分算法叫做对称加密或者非对称加密,以及消息栽要加密。我问一下朋友们,有朋友知道 s m 二是属于哪个体系里面的吗?对称,你确定吗?有没有不同的答案? 有的人说是栽药 s m i, 对 吧?非对称,非对称非常棒,是吧? s m i 的 话是属于非对称,为什么? s m i 加密算法它是有什么?它是具备的?是公钥加密,私钥解密, 对不对?是吧?它是公钥加密、私钥解密或私钥加密、公钥解密对称加密算法代码是不是直接就是密钥啊?它只有密钥,你像 s m 四, s m 三,是不是为我们的对称加密?消息栽要,你像 s m 三,是不是为消息栽要由哈希系列进行加密构成, 对不对?没关系,答错了,朋友们,也没关系,记一下,明白吗?答错了,朋友们,记一下啊,就是你们要记一下它里面这些特性,那么在这里你看我们可以来测试一下。第一个我们要来确定当前的是否为标准加密算法, 是吧?他是有没有可能他不是标准的,那不就很尴尬吗?是吧?所以我们在这里给他打上一个断点,然后打上一个断点之后,我们将在页面当中来进行重载,也就是重新调试。看啊,我们重新输入一个密码来点击登录,看啊,点击登录, 当我们去点击登录的时候,同学们有没有发现一个很尴尬的情况,就是当前代码位置他不会进行断点,你看是吧?他不断点,那么我们在这里打个断点,你看我们点击他是会断点的,有没有发现?但是我们在这里他不断点, 对吧?有朋友知道为什么吗?那为什么它在上面这个地方,它很明显是被调用的,但为什么它不断点,对不对?这里朋友们请注意了,这个叫什么?其实在这个地方大家有没发现它这个后面有个点 z, 是 吧?有个点 z, 点 z 是 代表什么含义嘞?点 z 其实就是属于回调,它这个地方其实有牵套了一个异步, 是吧?点 z 它是属于我们的 promise 点 z 嘛,对吧? promise 里面的一个,也就是说我们在前面这里所构成的是为一个 promise 对 象嘛,你看是不对,构成的是一个 promise 对 象,它由 promise 点 z 来进行了一个回调,那么在这里我们其实如果这样去分析会有点麻烦,所以啊,我们最好打到点,打在 y 的 上面,你看啊,我们打在这个 y 的 这个前面,你看,我们试一下, 你看,然后看啊,当我们当前断点断在 y 的 前面的时候,不是 a 啊,是 y 啊,不要搞错位置了,然后点击下一步,那么当前步入就会步入到他看,没有,因为他是由一个点进一步回调的一个方式,如果你直接在上面进行打断点,我告诉你他这个地方他是不会断点的, 所以你们注意一下。好,那么在这里我们当前需要来进行测试,我们要来做什么样的一个测试呢?当前里面的加密内容是否符合当前的 s m i 的 一个加密标准,对吧?我们来选中它,点击跳转进入该方法,那么在该方法当中,说实话啊,朋友们,这些代码我们是看不懂的, 朋友们,你们是不是看不懂,你看,我们其实都看不懂,因为这个地方我们也不清楚它是否为标准的,那么有没有什么好的办法嘞?朋友们,我们可以这样做,找一个在线的 smi 的 一个测试,在线 smi, 我 们来测评一下,看一下当前它里面的内容的加密结构是不 ok, 你 看这次是一个 smi, ok, 那 么像,在这里我们来尝试,首先 n 被加密内容,哎,先把它清空,你看啊,先是一个 n, 然后再是一个下划线点 value, 它这个地方有点像什么私钥,对吧?它这个地方有点像私钥啊,你们注意一下。 好,那么在这里你看,首先我们在这里找到这个是被加密的内容,然后我们进行测试,看一下当前这个地方是否为私钥啊?是否为私钥加密啊?把这个串给删掉啊。来,我们进行私钥加密,来点击速度,然后进行加密, 它这个好像不能,我们试一下啊,它这个加密的内容好像不对,我们试一下它这个地方,我们这样测的话好像有点问题啊。朋友们,我们来看一下它当前的加密结果, 那它里面是有点问题的,对吧?是有点问题的,那么在这种情况下,我们可以看到,要么就是我们当前测试有问题,对不对啊?可能我们当前测试,因为它这个网站像这种非对称加密的话,说实话它这种在线测试说实话会有点尴尬, 那你们有更好的方法 ai 分 析,看,我教你们各种技巧,这种技巧非常重要,你们在未来都可以使用到。 把伞都勾去卡住了,哪个把伞啊?你?逆向跟网安其实很多都是同步的,都差不多,来我们来看,那么在这里我们怎么办呢?其实我们可以学会做这么件事情,首先当前的执行的主逻辑是不是 l n 啊?朋友们, 是吧? l n 我 们可以看一下这当前的主体的部分是在于哪里?看这个地方是为它的一个大概的一个主体部分。那么我们现在可以把当前这个主体的一个逻辑啊,你看我们可以把它折叠一下, 大概就是这个部分,对吧?我们把它复制下来,然后把它复制下来之后,或者我们直接就是当前这个 l n 是 为我们主方法,对吧?我们把这个 l n 方法丢给 ai, 帮我分析这个代码是什么加密,那么像在这里你看它可以我们弄某爬来玩的。第六个什么某爬啊? 你看我们可以看到它这里话其实采用的就是国密的 smi 的 一个算法,叫非对称加密,对不对?你可以看到它里面的加密轮次以及加密内容其实都是 ok 的, 那么在这里我们可以尝试一下在本地去进行一个实现,那马上爬到第六关, 那你搞什么呀?等下给你们第六关,那么简单,来我们创建一个文件,这个是某文录 平台,对吧?嗯,映像登录,然后我们在这里来新建一个 gsr, 来新建一个 gsr, 好, 那么在这里你看我们像在本地里面它会有一些第三方的一些库,我们通过 node gsr 可以 来实现一下, 对吧?来,你看啊,我们首先第一步当前浏览器它建议我们是,你看当前 ai 是 建议我们比如说使用 sm 杠我们的 trap 第三方库来直接实现,对不对?那么在这里我们去进行声明,叫 sm 等于我们的锐块,然后我们在这个地方来导入 sm 杠 trap 点 sm 二, 这是不是一个当前的一个 sm 二,那么在这里我们去进行相对应的一个加密,就是首先被加密的内容,然后公钥, 对吧?这个是我们的功要,对吧?然后还有个一,那么在这里我们当前使用我们的 s m i, 它采用的是什么?我看一下采用的是一个度的一个方法吧?度 in trap 吧,是吧?采用的是度 in trap, 那 么我们像在这里我们就直接来使用 s m i 点度 in trap, 然后来输入我们的 part, 后面直接给个一,那么当前我们来看一下我们当前的这个内容是否 ok 啊?朋友们来我们来试一下, 没有问题,对吧?你看我们是不是搞定了?所以其实在很多时候你看你你可以发现这个网站是非常简单,这种就属于入门级别的,对吧?入门级别的我们的非对称加密算法, smi 加密算法, 是吧? smi ok, 那 么在这里你看像这个,其实说实话,如果说你们没有这种算法的经验的话,你们也很难判断出来,对不对?其实你要想现在很多人可能我们可以通过 ai 来分析出来, 但是你要想一下,其实你如果通过 ai 分 析,有时候 ai 啊它也不会给我们分析的那么明显,它里面有些内容可能还是分享不出来的,它还是需要朋友们对算法有一定的基础,一定的概念。首先你看我在这个地方,我是其实我在这个地方我就能够看出来它大概是为 smi 了,明白吗?我们就可以在本地直接来做它的一个测试,好,把断点全部关掉, ok, 搞定了。

这是一个可以用 tree 加 skills 来实现的浏览器自动化,这是一个试卷网站,现在我们啊要挖掘里面的内容, 然后结合自己的提示词,这个提示词就是让 tree 要用 skills, 这个 skills 是 一个啊浏览器自动化运行的 skills, 然后可以自动地去爬取里面的数据, tree 来完全地自动实现,不用自己来手动实现。 现在已经打开浏览器了, 它会自己操控这个浏览器,然后进行搜索,然后以及点击以及下载, 全程都是自动化的,不用手动操作。 好的,现在已经下载好两个了,可以看一下在这个文件夹里面,然后下载的是一个压缩包,然后把它进行一个解压, 解压之后就是一个下载好的文档,然后大家可以用呃 word 或者 wps 点开看一下, 就是高清可编辑的一个文档,这样在采集数据的时候,呃就不用自己手动操作了,可以交给 agent 来执行。

爬虫逆向实战教学,今天是豆瓣电影,获取更多学习资料,可进入主页粉丝群查看。今天呢来给大家去分享一个爬虫小案例,就是爬取我们的豆瓣网前二百五十的一个电影排名, 这个豆瓣网呢小伙伴们是去练习爬虫案例比较好的一个网站,是很多小伙伴啊开始学习爬虫的第一个案例网站。 那我们今天呢就来看一看怎么去爬取我们的这个数据。首先呢,大家来看到这个页面啊,先找到我们要爬取的数据吗?是不是都在这里?那我们就右键打开我们的一个调试面板, 大家可以看到这些页面上的它的一些元素呢,都是在这里的,对吧?就比如说像这个肖申克的救赎,我点击,然后他就是一个 spa 标签,那像这个导演之类的这些数据呢,都是会在这里的可以看到,对吧? ok, 那 我们呢就现在可以从这些数据中呢获取我们想要的数据,就比如说我现在只想要一个电影名字,然后还有电影排名,那怎么去获取呢? 我们可以用到我们的一个叉 pass, 叉 pass 是 什么呢?叉 pass 呢,就相当于是一个呃宝典,对吧?就比如说你要去和你的情敌打架,但是呢你打不过怎么办呢?这个时候有人给了你一本葵花宝典, 你只需要去把这个葵花宝典练成了,无论呢你跟哪个情敌打架,都可以是手拿把掐的,对吧?那我们的叉 pass 也是一样的,只需要你学会这一种方法,在这个页面中学会用叉 pass 去提取数据,你呢在其他页面用叉 pass 提取数据呢,也都是一样的操作,我们呢就一起来看一下, 那我们现在呢,我们是想获取这个肖申克的救赎,对吧?就比如说我现在就想获取他这他的这个在这里,那我们打开叉 pass, ok, 我 们呢看到肖申科的救赎,它是一个 spa 标签,我们呢就往上找,找到一个它的一个大标签,就比如说这个 div, 对 吧? div 这个标签,我们两个斜杠先写上我们的 div, 然后 div 它是有属性的,对吧?它是有一个 class 属性的,那我们呢就艾特 class, 等于这个属性名,这个属性名叫 hd, 对 吧?那现在小伙伴们可以看到,我现在只写的或许是 div, 对 吧? 这个大的标签,但是呢,这个大标签里面内容很多啊,像这个名字,还有它的一个什么可播放等等的这些信息都会给我们展示出来,对吧?这些黄色的就是我们获取到的数据,那我现在想获取的更加具体一点,那我们就接着往下找,你看再往下呢,它是有一个 a 标签,对吧?那我们想要的这个 数据也是在 a 标签下面了,所以呢我们就写 a, 然后写到 a 以后呢,我们是不是要获取 spa 标签,对吧?然后获取到我们的 spa 标签, 获取 spa 标签呢?但是 spa 这里会有三个,对吧?那我们这三个数据都已经获取出来了,那怎么办呢?我们只需要给他中括号,告诉他我们获取的是哪一个 spa 标签就好了,那我现在获取的是第一个,对吧?那我这里就写一个一, ok, 那 我们现在是不是就已经提取到这个电影名字了,对吧? 这个方法呢还是非常简单的,小伙伴呢多去练习一下,像获取这个导演呢,获取他的主演了,对吧?这个方法呢? 然后呢我们刚才去说的是不是爬取豆瓣的前二百五十个,对吧?那我们这一个页面,我们可以看到往下来看他一一个页面,他的数据只有二二十五条,那我们这样是不行的,我们可以来观察一下他有什么不同,对吧?首先呢就可以先找到我们这个链接,看看有什么不同, 这个链接呢,我先截一下图给大家盯一下,大家可以去观察一下第一页,第二页,第三页它有什么不同,对吧?你看第这是第二页的排版一下,然后再往下这是第三页的, 现在呢就盯下来,大家一起来看一下这三个链接它有什么不同,对吧? 那我们呢就可以很清楚地看到我们这个链接,其他的是一样的,只有这个 start 是 不一样的,第一页它的 start 它的值是零,第二页就变成了二十五,第三页呢它就变成了五十。那我现在是不是就会有一个猜想,我只需要去改变这个 start 它的这个值,它就会给我跳转不同的页面,并且呢给我获取到 不同页面的一些数据,对不对?没错,这个就是这样的,我们呢只需要去改变 start 它里面的值就可以了,并且呢这个 start 它的增长是 隔二十五个取一次,隔二十五个取一次,是不是小伙伴们还是非常有意思的,那我们呢就可以到我们的代码里去看一下。怎么去实现看一下啊,这个呢就是我们的一个整体代码,首先呢我们导入的库是 request 的 库,是我们爬虫必备的,对吧?应该也是一个老朋友了,对于许多人来说, 再往下呢,我们是导入了一个 e tree, e tree 是 什么呢? e tree 它可以去帮我们去解析我们刚才去写的那个叉 pass 提取数据的,对吧?这个就是我们的 e tree 一个用处。再往下就是我们的 c s v, 我 们要把刚才去爬取下来的数据呢去存入到我们的一个 c s v 文件里,那我们就一起来看一下。 首先我这里去定义了一个 hidears, 这个 hidears 呢是进行伪装的,我们去爬取数据的时候来进行一个伪装,再往下就是到我们的一个 打开,把我们的一个数据存入到一个 csv 文件里,就在这里使用到我们刚才去导入的 csv 文件库,然后我们在这里呢就可以看到, 然后还说的不同的一个 start, 它的值就会跳转不同的链接,不同的页面,给我们获取到不同的信息,对吧?并且呢我们每个获取的这个睿智,它的这个值是隔二十五取一次,对吧? 那这样的话就可以跳转到不同的页面,然后给我们获取到所有的前二十五个排名,是不是了,小伙伴们,然后在这里呢,我就发起了一个 get 请求,把的把这个路由还有我们的一个 headers 都传入到这里了, 然后呢就实力化了一个一锤对象,通过一锤对象呢,然后就可以去提取我们的叉 pass 数据,然后我们循环的去提取,就可以 获取到所有的一个数据都会在这里的,然后再往下呢就是我获取的是不同的一个数据,像就像这里,我这里获取的是一个年份国籍,然后还有电影评分,电影打分人数,我都是获取到的。如果小伙伴呢不需要获取这么多的数据,就可以根据自己的选择来定义, 因为我这里是获取的相对来说比较多一点的。然后再往下呢,就是把获取的数据获取完以后,也存入到我们的 c s v 文件了,最后就是关闭我们的文件,然后给我们打印一句爬虫结束。 ok, 那 以上呢就是我们的一个整体代码的实现,还是非常简单的,对吧?小伙伴们 大家也可以动手去尝试一下,因为我们的这个动态网是第一个爬虫案例,并且呢它的这个数据还是相对来说比较简单一点的,获取这个数据, ok, 那 up 主今天呢给大家分享的就是用我们的 python 去获取豆瓣前二百五十的一个排名电影,如果有小伙伴呢需要这份原码的话,可以在后台给 up 主打招呼,然后 up 主呢把这份原码分享给你进行学习。 ok, 那 这期视频呢就分享到这里了,我们下期视频再见了,拜拜。

挑战爬一百个网站,今天是猫眼电影票房数据,我们今天来看的是猫眼的票房数据采集,同样也是一样的,右键选择检查,打 开开发者工具,打开之后进入到网络面板当中,在这里去刷新抓取数据包,然后 ctrl 加 f 弹出来搜索框之后再来去搜一下对应的这个数据。 我们来看一下这里的第一个是疯狂动物城二,我们可以搜一下他这个是零四,这个是零一,零一是疯狂动物城二,搜索疯狂动物城二, 好搜索发现他在这里都有出现,一二三四五五个数据包里面都出现了,而且他这五个数据包都是一模一样的名字,那也就是说他在不断的去发包,这个猫眼他的确也是实时的去更新的,所以他在这里会不断的去发数据包。我们随便找一个来看, 在这个里面他的确有对应的一些数据,比如说什么上亿六十七天名称,他的一些百分比其他的一些数据, 那这个地方其他的数据其实没什么好说的,他都是正常的去获取就好了。如果你也对拍粉爬虫感兴趣,主播将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的。这样是这样的一个 键值段里面的一个 number, 这个是做了加密的,所以我们在想象当中能拿到的也是这样的一个数据,也就需要去给它做解密,给它解回来,我们可以先去试一下右键去复制它的一个 c 二幺,在这里通过一个转换工具给它转换成 python 代码去复制一下,我们这里创建一个 python 文件包页儿,票房好 粘贴过来之后, cookie 给它解开,这上面给它收起来一下,我们先去测试一下能不能得到正确的数据。 print response 点 json, 它是 json 格式的数据,可以右键去运行,看一下能不能得到。 是能够得到正确的数据的,它在这里获取到的数据的确也都是密文值,那这个时候它其实是什么啊?就是字体加密码,我们在这里的一个元素密码去看的时候,它这里也是不会显示出来的,来看一下这里,它也是没有显示的, 它是一种字体加密,那么字体加密肯定就会有字体文件,我们这里可以看一下,你会发现它这里每次去发一个 movie 的 数据包的时候,下面都会带一个什么?带一个点 word 的 字体文件,那么这个点 word 的 字体文件的 y y 能不能搜到?我们可以搜一下这个地方,给大家拿过来一点,好 给它搜一下这个后缀,其实它是能搜到的,而且它其实在什么?在这个数据包当中,在这里有个 front 这样的一个样式,样式里面包含了这样的一个链接,这我们也可以去取,可以在预览这里来看一下,它是直接字典去取值就好了,所以我们这里取一下这样的一个 front style, 来这里给大家放个变量, 比如说来个 data data 去取这个链接,我们来去打印看一下。 print url, 右键去运行。啊,是能够得到这样的一个链接的,得到了之后呢,它这里还需要去做一下处理,是吧?用我们这里要去取它,它里面还有些其他的东西, 当然你可以通过正则来去取,也可以通过一些字母串的处理方式来去处理。我们这里可以去用切割的形式,比如这里用它来做切,能切出来三个,我们去取最后一个, 那么这就是点 split s p, l, i t。 用它来做切割,去取最后一个,取到了最后一个之后再来去对它做处理,我们把后面的这个给它去掉就好了。点 replace 啊, e p l a, c e 去掉就替换为空。前面呢需要去给它拼接上 h t t p s, 这里再给它拼接一下,就是一个字体文件的 u r l 的 来去 d, d, p s。 加个冒号儿吧。好,这里是 front u r l 符合变量。再来跑一下,现在这里就接得到了这个链接之后,我们就给它请求下载到本地,那这里再去给它这个字体文件,我们也给它单独的去带一个 header 过去请求它。这里就是一些 这样的一个数据,我们来去再转换一下,因为它字体文件和普通的一些其他的文件它可能不太一样,请用头我们给它单独拎一个过来。好,这里给大家再设置一个,比如说是 funt help us。 好, 设置好了之后,这个地方收起来,我们就给它请求一下。 the v is open, 这个是猫眼儿点 warf 这样的一个后缀。 w b 模式,给它写入 r f f 的 right, 去写入它的什么静止格式的数据啊。 get 这个 y 二 y 就 等于放弃 y 二 y。 headspace 呢?也等于放了 headspace, 点 content 去写入它的静止格式的数据。来跑一下能不能给它下载到本地这个字体文件,这里就多了一个点 off 的 一个后缀文件,我们在本地打开看一下,打开之后这里可以去双击用对应的一个软件,软件给它打开, 稍等一下,这个字体软件他启动会比较慢,这个时候就可以看到他在这里就得到了这样的一个,如果你也对拍粉爬虫感兴趣,土包将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解 界面,这个就是他里面的数字,零一二三四五六七八九,包括一个点、小数点之类的,他也是有的,那么就可以去通过这样的一个字体文件,然后去得到他对应的一个印刷关系。那么 怎么去获取他的映涉关系?他的映涉关系什么东西呢?这里我们可以看到他的一个数据文件里面是这样的一个数据,他这里肯定是一个编码,就对应的是一个数字, 这里应该也不是不叫编码啊,他这里是一个相当于密文值,就对应了一个数字,那就需要找什么,就需要去找到。比如说这个密文值他对应的是谁,这个密文值这个密文值他对应的是谁,他肯定证实是变化的, 所以我们要去找到它的一个印刷关系之后,再来去把这样的一个密文值给它替换成明文值。那么至于怎么去给它做识,怎么去给大家找到印刷关系啊?这里它其实要去用一些识别模块,我这里就有一个代码, 我们就可以去导入这个代码,去交给它识别就可以了。 from 啊这个 import 这个识别导入文件 怎么去用?这里只需要传一个路径过去就好了,它这里是有一个变量来接收的,有个参数来接收的,我们这里可以直接用它识别导入文件,去点这样的一个方法 get 这个方法,咱们这里就得传一个路径过去,好,它就能过去得到一个结果。 resut 结果来打印看一下 print resut 右键去运行, 他会交给对应的识别模块去做识别,那就得到了这样的一个识别的结果,比如说他把这个识别成了一个八,把这个识别成了一个九,对应的是一样的,这个会得到一个最终的结果字典, 那么这个字典我们要去给他做一下处理,一二零,其实看起来好像来给他带上说不定是什么其他的特殊的东西,那现在呢?我们这里就可以去给他做一个处理了,这里是什么?他是一个相当于密文值,对应上的是明文值, 那么你说这个密文值,它和我们在想象当中看到的也不一样,它这里是这样的一个形式,是吧?这是因为它在这个地方是显示的十帧制,我们 这里要去给它弄成十六帧制的,就需要去循环,循环这个 resut 点 item 这样的,这是一个字典,去这里我们可以去给它 for key, value, 那 么这里来打印看一下 key 和 value, 右键去运行就能够去得到这样的一个东西,得到这个东西之后,我们就再去给它做一个,比如说十六帧制的转换, 变成了这种形式,变成了这种形式之后,它这里还是不太一样,但是它后面的位数是一样的,后面是四位,前面的零 x 不 一样,密文整的是这样的一个拼接符井号 x, 所以 我们就需要去把这个零 x 给它替换成拼接符井号 x, 改为 plus, 把零 x 啊替换成这个。好, 那么这个就是我们的一个,比如说新 k 值这里我们就再去弄一个,比如说 funt d i c 创建出来一个字典,这个地方就是一个 funt d i c, 它的一个 key 就 等于这个铭文值,最后我们这里再去让它得到这个最终的映涉关键字典得到了之后,现在我们就可以去循环这样的一个数据了嘛, 我们去取这个数据,这里就没什么太多好说的,就正常去循环取值就好了,就直接把它代码给大家复制过来啊,差不多就是这样的一个形式,给大家做循环取值就好了。我们来就先跑一下,其他的没有去打印,就只打印了简单的一些不需要去做解密的内容,现在需要去做解密的内容是这个, 这个是来打印看一下 print 哈,好,这个数据我们需要去给它做解密,我们就把这个数据再交给一个函数去做一下处理,我们就给它分成一个函数啊,就不在这个循环里面去写了。比如这里来个什么替换,他接受一个,比如说,嗯,现在我们再来去循环这样的一个字典,循环这个字典 for 这个 key v in 这个 funt d i c atoms, 在 这个地方就可以去对 n 来做替换的, n 等于 n 点 plus, 将什么将它的 key 值、密文值替换成什么呢?替换成对应的铭文值就好了。我们最后循环结束之后啊,给它 return 这个 n 就 好了,好,那就把这个数据给它传出去,那么就是替换,这里是传入它接收,比如说就接收一个 n 来打印看一下 print n, 右键再跑一下,那么就能够去得到对应的一些数据了,它中间有分号,在它返回的时候把这个分号给它替换掉就好了,加入 plus, 将分号替换成空值来再跑一下, ok 就 得到数据了,幺幺三五点三八,来看一下这里它怎么再跑一次,它这个是在不断的增长的, 在这里也在变化,变成了六一了,幺幺三五点六幺了,现在这里六九了,他在这里不断的去加,好吧,这里我们就给他做解密了,下面的零点零, 零点零零的呢,也是正确的一些数据,这个就是猫眼票房的一个字体解密,字体加密的一个逻辑,如果你也对拍粉爬虫感兴趣,土猫将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解。

这是某宝的热卖网,怎么样快速的构建一个基础爬虫来实现数据的自动下载呢?五分钟的时间来教大家如何进行工具的一个快速解决。那么像这个网站它到底是采用了一个什么加密呢?我们来看一下啊。首先我们可以打开在下方的开发的控制台里面会有个网络, 会有个网络,如果你也对前端逆向攻防感兴趣,老胡啊,我专门给大家准备了爬虫逆向实战的一个直播课,拆解目前市场主流的一些前端加密技术,还配套录制了全套的逆向入门学习视频,大家记得在粉丝群里面来进行获取,然后在网络界面里面,我们去勾选我们的全部啊,筛选全部,先把暂时把当前所记录的 logo 信息来把它清空 好,那么我们现在在页面当中,你看这里我们是可以直接来进行搜索啊,会有个对应的搜索接口,对吧?我们来直接进行搜索,比如说我们搜索一个女装来进行搜索,那么当我们像在上方去进行搜索的时候,我们像在下面,你看他就会来记录我们当前的客户端跟我们的不计,他们之间的一些数据的一些交互, 对吧?这不都能够记录,看没有都能够记录,那么当它记录的话,我们现在可以看到啊,它里面是有很多接口的,那么我们当前的重点我们是需要来找一下我当前所需要的这些数据,对不对?你看我们是需要当前这些数据,看一下这些数据是在哪个接口里面, 那么我们可以来尝试来搜索一下它对应的关键字,来找到它的数据所包含的接口,你看我们选择把这个点高亮来选中,比如说选中一个名称,然后在这里我们进行搜索啊,比如说我们来搜索一下,是吧?这个是高尔夫夏秋凉啊,什么一个防晒的,一个树干的一个袖子,是吧?来我们在这个里面,你看它这里有个放大镜, 看没有这个放大镜,把这个放大镜给打开,然后进行搜索来搜索,当我们搜索的时候,那么我们像在这里我们就能够快速的去找到。你看我们当前所需要的这个数据,他是不是在这个二点零的一个接口里面?你看 他是不是在这里?朋友们是不是在一个二点零的接口这里面,对吧?这个是一个是这里是一个技巧,我给大家讲一下啊,记住啊,就是我们在很多时候是吧?就是我们比如说是吧很多时候他有 网页,他的一个网络当中记录了多个接口,是吧?在不清楚, 是吧?数据在哪个接口里面,那么我们可以怎么办呢?可以来直接进行内容的搜索,把内容的搜索,通过内容的搜索,我们就能够快速的来找到我们当前的数据所在的一个接口,你看是吧?可以点过去,那么当我们点过去的时候,我们可以看到他这个地方会进高亮,看见没有会进高亮来在这里 收获进行高量,好,那么像在这里我们现在来尝试来构建一个 python 的 一个 request, 那 么像在今天我们将用到很多的一些工具。首先我们今天啊我们会用到一个 ai 工具, ai 工具的话,目前 ai 可以 说是已经算是比较成熟了啊,你们可以根据咱们的自身的一个需求去使用,比如说目前像国内的话,我建议大家可以使用豆包,其实豆包呃,非常的 nice 啊,可以使用豆包,然后其次你们也可以使用像个 google, 或者说像这个谷歌的我们的一个迷你,是吧?都是 ok 的 啊。 那么在这里除了这个工具之外,我们还会有一个工具,这个工具是一个目前用于专门的来转我们的 c y、 l 的 工具,这个是主要的核心,就是通过 c y、 l 的 一个方式来把它转变成各种 的代码,比如说有 c c hop, 以及还有像 go long, 以及还有像我们的 p h p, 还有像 java, 以及还有像我们的 python, 还有像 r 等等等等相关的编程语言,它都能够来把它转变成对应的格式,那非常的方便。 那么在这里你看我们当前请求的这个接口,在这个接口这里啊,右击点击复制里面的 c u i l, 我 们记住复制的是这个 b a s h, 也就是 b s 这个格式,来把它复制好,复制 ok 之后把它粘贴过来,你看那么在下方啊,它就会直接来帮我们来构成一个 python 的 request, 那构成一个 python 的 一个脚本看,没有啊?你看是不是直接生成了一个 python 的 脚本,那么我们在当前在生成的这个 python 的 这个脚本里面,我们可以在我们的代码的投入中去新建一个 js 文件啊,你看我们新建一个文件夹,对吧?某宝热卖网,对吧? 然后来右击新建一个 python 文件,把当前的 python 文件把它复制过来吧,是 ok 的。 好,那么在这里各位请看一下朋友们,我们当前寄予我们的 request, 你 看在这里是不是就是有分别有核心的几个逻辑?首先你看在这个地方,第一个我们的 id, 是 吧?你看这个就是我们的请求头,对吧?用模拟浏览器的请求,然后这个地方的话代表的是我们的 partner, 也就是我们的请求参数, 然后像在这个地方它发送了一个 get 请求,是吧?你看这里是不是有个点 get, 它通过我们的 request 来发送的?对当前的这个某宝热卖网的商品的接口来进行了一个 get 的 一个请求,并且携带了我们的请求参数和我们的请求 cookie, 也就是用户信息,还有我们的 id, 我 们的头部信息, 是不是啊?那么在这里当前请求请求 ok 之后,我们可以看一下啊,当前在这里我们对它来发送了一个请求,对不对?这种就属于无界面的,基于协议来直接进行请求。然后我们可以看一下当前网页,也就是当前这个网站,它给我们所返回的数据是一个创, 看啊,它是一个创创,那么我们在这里直接给它跟上点 t s t test, 然后使用 word 来进行我们的 response 的 打印,那么这样你看我们当前这个程序就能成功的来请求获取到当前的一个页面的数据,对吧?只是说我们当前这个数据还没有清洗,对不对?

教你爬取全球编程网站的排行榜。哈喽,大家好,我是程序默默,今天的话我想教大家通过我们的一个拍摄爬虫技术去爬取这一个世界编程网的这一个排行榜的一个排名,这个里面的话主要的一个目标数据的话是有这些里面的有 二零二六年,包括二零二五年里面有各种的一个编程员的一个排行榜。那接下来我们废话不多说,我们就开始上我们的一个代码,我们先导动我们需要的一个工具的包, 后面跟上我们的一个 p d s p d。 如果是有一些同学是没有这一个工具的话,大家是需要去进行一个安装的,安装的命令的话是我们的一个 p i p, 后面跟上我们的一个 install, 后面这里的话跟上我们的一个 p d s 这一个名字。安装好了之后呢,你可以把这个命令直接复制 ctrl 加 c 点击我们电脑的一个终端, 点击完中断之后呢,我们这里就把它拉上来,然后把刚刚的命令按住 ctrl 加 v, 点一下回车,这里就会帮我们去进行一个安装,因为我是以前安装过的,所以说这里的话就会有一个 already satisfied。 好, 这里安装好了之后呢,导播也导好了,接下来我们把刚刚的这个目标的一个网址把它拿过来,直接是这个 网址,因为这个是一个网址嘛,也就是我们的 stm 的 一个文件,你把它按住 ctrl 加 c 复制一下。复制好了之后呢,接下来我们把这个链接按住 ctrl 加 v 放到这里,接下来我们这里就通过一个变量名,通过我们的一个 date 等于什么呢?等于我们的这一个 p d 啊,点上 p d 的 话是调用这一个 pandas, 里面这里有一个 read, 后面这里有一个 html 的 一个文件,因为我们这个是一个网址的文件,所以说我这里也是用的一个 html, 后面这里跟上一个括号,把刚刚的这个链接呢直接复制给到这个里面,当然我可以给上一个编码名,给上一个 u 等于它 啊,在里面后面记得一个上午的一个名字啊,就是把它变成一个字母串的数据,把刚刚那个 u 放到这个里面去,很简单,导入完之后呢,接下来我想拿录你们的第一个数据,你就在这个后面 写上一个零字,这个是我们拍摄里面拿数据的一个特有的方式,你想拿第一个就写零,如果你是想拿第二个的话,你就写一,这里我操作给大家看一下 print, 打印我们这个 date, 手办右键点一下我的这个运行,运行完之后呢,等会的话我们这个表格就会有数据的,这里的话大家要耐心等待一下,因为我们这里是访问国外的一个网站。 ok, 这里面是就会有很多数据在里面,这个大家都是能够看得到的吧?你看我把这个数据给大家看,是数据都有,但是里面有一些数据呢,这里会有一些空值,那也就说有些数据我是不需要的,那我这里的话就需要筛选一下,就是我只拿到你们特定的一个列数,第一个这里是我们的一个零,第二个这里是我们的一个 一二三四五六七八九,你可以这样去数,那我这里的数据的数的话,我直接给大家演示一下,这里呢是直接是我们的一个 d f 等于什么呢?等于我的这一个对它点上 look 这个 i look 方法, 后面这里一个上一个括号,把刚刚的这一个也是用的我们这种的一个中括号的一个提取啊,写上,然后里面这里是有一些数据,你先写逗号,前面这里是表示我们的一个横,每一行数据我都是需要的,那后面这个就是列啊,这里写下注上第一个我们这个地方,前面这里是横, 后面这里就是我们的一个列。 如果说你想拿到所有的一个行的数据的话,你就写上中的一个符号啊,就是我们的中的一个顿号,冒号写了中的,那我前面的行都要,我就写一个中的一个 逗号在里面,写完好了之后呢,接下来我们再用一个逗号给它隔开,后面这里就是我们的一个列,列的话,就比如说我这里会随机挑选第一个一,后面这里当然你可以随便去选四 五六啊,为什么是这些?因为我是通过这个念一念一念去拿的。洗完之后呢,接下来我再打印一下给大家看一下数据,这一会就不一样了,鼠标右键点一下我的一个运行这个数字呢,把它注视一下,好,我们这里等他一下,到时候他就会直接打印输出了, 看到没有?这个里面就是有对应的一个数据都有了,这个是我们要的一个数据类型,就把它第一个是 python, 第二个是 c 加加,其次是加网,再是我们的一个 c 下坡, 那这里的数据都拿完之后呢?接下来我要把它保存到 excel 表格里面,数据怎么办?一行代码就可以直接解决掉了,这里通过 df 点上,里面这里有一个 to excel 下划线啊,这里有个 to excel, 你 把这个注示一下,我们是 to, 后面这里跟上我们的一个 excel, 后面这里跟上一个括号,里面这里你就写上 excel 这个名字,比如说二零二六年变成 变成排行榜,后面这里是点,因为 excel 数据是叉 l s 叉的一个文件,你就写完,写完之后呢,等会在我的这个文件里面就会多出一个文件出来,我们这里的话来运行一下手背右键点一下运行, ok, 这里还是少了一个工具,我们把这个工具也给它安装一下, ctrl 加 c, 这里呢点一下我们的终端, 把这个工具给它换一下,给它安装。后面这里按下我们的一个回车键,这里会自动帮我们安装。安装完之后呢,我们接下来再来运行。 哎,这个时候的话就已经多了一个文件,你把它打开到我们这个资源管理器,用我们这个本地把它打开 啊,打开之后呢,等会我们就可以给大家看到里面,这里是有很多数据的,这里大家可以看一下,你们是数据都已经保存到我们的电脑里面来了,这个就是我们一个简单的一个爬树案例,那么你学会了吗?

就说要怎么用 python 去抓一个网页上面的内容啊?我们现在用这个最简单的百度汉语,我们先来做一个方式,它出来了这一些,我们现在先把这个里面的这些内容给它抓下来,那我们要看一下它是怎么请求的。在这边点这个现场, 你先点到这个网络这边,我们翻一个下页,我们看一下这个,这个应该就是页面里面的内容,这个叫 read error, 应该就是页面上显示的内容,那我们就可以直接从这个标头这边开始,先把这个 url 给它复制下来, 我们切换到这个 python 这个里面,我们新建一个 python 文件, 我们先导入 import request 是 r e q 或者切损 u l r e p 等于 r e q get 好 了,我们的 print text, 看一下啊,出来的是什么啊?这边它其实它已经可以把内容给抓下来了,我们再转换一下 那一 p 等于一笔的节省, 可以正常的解析,那么这个就好办了,我们从这个网页上面的相因得知我们要的内容在这边,那么在这个里面直接去打印 就是我们要的内容,它就已经出来了。 ok, 那 我们再把提取它的这个,它是哪个哪个朝代的,这边可以用一个或循环啊,因为它这边它是一个 list, 所以 我们这这边加一个或循环或那一层 e i e t r 好, 不是直接打印 item 就 可以了,就是 item, 看下它是什么。 嗯,所以说把上面的内容给它拆解开。呃,很简单的,我们看的是哪个朝代的,还是这个 运行啊?它都是弹的,那我们再把那个诗的名字给它加上去,从这边可以看出来这个诗的名字在这边是一个 disco, 把这个改成 disco, 我 们运行看一下这名字它就出来了。那现在就是还缺一个,缺个它的包点,我们把它的包点。对啊,包点。 ok, 下一节我们说怎么去翻译。

拍散爬虫教程第十三天综合实操案例哈喽大家好呀,我是钱。今天我们来解锁一个超实用的效率技巧,如何用代码一键归档网页高清美图,把繁琐的手工保存变成自动化流程。咱们先看这个演示页面, 想实现自动归档,第一步也是最关键的一步,找到图片藏在哪。图片在电脑里存着的时候是一堆二进置数据,但在网页源码里,他是以链接的形式出现的, 怎么把这个链接给他揪出来呢?很简单,打开浏览器的开发者工具,切换到元素这个面板,然后点击左上角的那个小箭头图标, 这时候鼠标区页面上随便点印张图片,代码区就会自动跳到一个 image 标签上,在 html 里只要看到这个 image, 就 等于看到了图片的身份证, 它身上的那个 s、 r、 c 属性写的就是这张图片的真实地址,不信我们复制这个链接。新标签页打开,展示的就是我们刚才看到的那张图片。 当然,我们的目标绝不是只存一张图,而是要批量打包带走。所以接下来要搞定的是一次性拿到页面上所有图片的链接。那这些链接藏在哪里呢?我们切换到浏览器的网络面板, 刷新一下页面,加载所有的数据包,然后搜一下刚才复制的那个图片链接,你会发现蹦出来了两个数据包, 那上面的这个就代表的是一张图片,而我们需要的是多张,那就看第二个数据包,那我会发现,刚才那张图的链接,连同页面上其他所有图片的链接,都以一米几标签的形式整齐地排列在这里,那规律一下子就清楚了, 每一个一米几标签对应的就是一张图片,标签里的 s、 r、 c 属性就是图片的地址, 那怎么一次性把它们全揪出来呢?这不就是我们上期讲到的叉 pass 功能吗?提取 html 特定的标签属性,简直就是完美匹配。那我们一起来梳理一下今天的核心流程。 第一步,发送请求,获取完整的网页 html 源码。第二步,利用叉 pass 语法,精准提取所有一米级标签中的 s、 r、 c 链接。第三步,根据链接获取图片。那考虑到时长,我们就先攻克前两步, 获取源码与提取链接。那至于如何高效地将这些链接转化为本地文件,我们留到下集视频,手把手带大家完成最后的闭环, 敬请期待吧!首先是获取源码,我们找到对应的数据包,鼠标右击选择复制,选择 c url、 bash 的 格式复制,快速生成 python 代码,将代码粘贴到拍唱当中,并通过点 test 属性来获取源码。 这时候如果你直接打印内容,可能会发现中文全是乱码,这里因为默认的编码格式不匹配,那教给大家一个小技巧,去网页源码里看一眼 mate 标签, 发现它用的是 g、 p、 k 的 一个编码,所以我们手动加一行 response, 点 encoding 等于 g、 p、 k, 这样后续的文本内容就能够完美地显示中文了。 数据到手后,就要开始提取关键的信息,我们利用 h 点 html, 把刚才获取到的 html 字幕解析成一个可以操作的文档对象, 观察网页结构。我们需要的图片都是在 a m g 标签里,但图片上还有其他杂乱的图片。我们不能直接选全部的 a m g。 标签,而是采用由上至下的定位策略,先找到拥有唯一的 class 等于类似的属性的 d i v 标签, 然后顺着 u l l i 层层向下,最后锁定一米几标签。于是我们写出的叉 pass 表达式可以使双斜杠 div class 等于 list 它下的子标签 u l u l 下的子标签 l i l i 下面的孙标签一米几。这样就能够精准地拿到列表里的图片地址,并把它复制给 image list 这个变量。 最后一步就是便利这个列表,把每张图片的地址和名字都抠出来,我们写一个负循环,依次处理 e m g list 中的每一个元素。 对于当前的 e m g。 对 象,图片的真实链接存储在 s r c 属性中,而图片的标题名称则存储在 a r t 属性中。我们分别用叉 pass 的 艾特 s r c 和艾特 a r t 语法将属性值提取出来, 由于它是一个列表,可以通过所以零来获取具体的值。现在运行代码,你就能看到控制台上整齐的打印出每一张壁纸的链接以及对应的标题。 后续只要加上文件保存的逻辑,就能够轻松的建立一个本地的素材库。那具体怎么保存呢?我们下期揭晓,我们下期见。

pasa 从零开始学,今天要讲的是抓取招聘网站数据,今天我们来看如何使用三步抓取网页数据, 轻松获取拉勾网中所有岗位名称、公司名称以及薪资等招聘信息。在正式操作之前,先来了解一下招聘信息是怎么显示到我们眼前的。当我们在谷歌浏览器中打开一个网页,想要查看其中的信息时, 在地址栏输入对应的网址,回车就会跳转到相应的网站。在这个过程中,浏览器会将查看招聘信息的 request 的 请求发送给服务器,告诉服务器我们想要访问的网站内容, 服务器接收到请求后,就会响应这个请求,把对应的网页信息显示在页面上。这就是人类查看网页内容时,浏览器和服务器之间进行的操作过程。 整个过程非常迅速,快到我们几乎察觉不到。了解这个过程就是我们编辑爬虫程序的基础。 网络爬虫的英文是 web crawler, 也称为网页蜘蛛,是一种按照一定规则从网页上获取信息的程序或脚本。 通俗来说,就是通过模拟人打开网页浏览,在浏览过程中发现有意义的信息,然后复制、粘贴保存下来的行为。 现在我们进入拉勾网这个网站,上面有很多招聘信息,例如资深 server 研发工程师、 python 开发等等。当我们想要了解某个招聘信息时,点开会发现每一个招聘信息都有岗位名称、 公司名称和工作要求构成。如果我们想要将网站中所有的招聘信息保存下来,对比哪个岗位更赚钱,哪个公司待遇更好,可以通过复制、粘贴、保存到文档的方式来获取这些信息,这就是人为操作时的一系列行为。 如果是爬虫,他会怎么做呢?在任意一个浏览器中打开一个网页,看到需要的数据时,将鼠标移到上面,然后右键点击检查,就可以看到网页上的内容是通过标签代码显示出来的。 爬虫可能分不清页面上的哪个是岗位信息,哪个是公司名称,但能够看懂代码中的标签, 可以看到页面上的内容都被不同的 html 网页标签包裹着。将光标移到薪资信息上,就可以看到它被一个名为 celery tx y c。 的 标签包裹起来。爬虫的工作就是将标签里面包裹的文字抓取下来。 当爬虫接收到这样的指令后,他就会去查找所有名为 celery tx y c 的 d i v 标签,然后把里面的文字信息抓取下来。 这就是爬虫寻找网页信息的全部过程。要注意的一点是,有些网站会阻止爬虫爬取数据,服务器会辨别哪些是人为请求,哪些是爬虫发起的请求。爬虫也可以使用一些方法,例如更改配置,伪装成浏览器发起人为请求。 网络爬虫还可以同时多次发起请求爬取数据,但这样很容易造成一些小型服务器的崩溃,而且流量消耗过多也会让这些网站的主人承受不起。所以针对小型服务器,我们可以调整请求速度变慢,让网站能够接受这些请求,不至于崩溃。 但是有些网站还是不希望被爬虫骚扰,就会发布一个 robots 文件,文件里规定了在这个网站需要遵守的规则, 但这份文件只防君子不防小人。作为一个有礼貌的爬虫,在爬取数据之前,记得先查看 robots 文件中的约定,不要给他人造成烦恼。 接下来我们通过代码来爬取拉钩网上的招聘信息。在获取信息前,我们首先需要导入四个库,第一个库是 csv 库, 主要作用是将爬取的信息导出到 csv 文件中。 csv 文件相较于 channel 和 jason 更加简洁,并且可以随时查看抓取的结果。使用 time 模块,用来控制爬虫发起请求的时间间隔,避免因请求过快而被反爬虫机制检测到。 使用 request 模块,这是爬虫开发的核心工具,主要负责发送请求并接收响应。使用 l x m l 库中的一 tree 方法 主要是用来解析 html 中的网页标签。导入需要使用的库之后,需要从键盘输入抓取的关键词和对应的城市以及页码,并且定义请求头。请求头的作用就是伪装成浏览器发起请求,避免被反爬虫机制检测到。 定义一个 info list 列表,用来装载爬取的信息。打开拉勾网,我们可以看到网站中有非常多的招聘信息,而这些信息做了分页处理。每一页招聘信息都需要我们重新发起一次请求,所以使用 f 循环对每一页都发起一次请求。 在 u i l 中写入请求的网址以及想要抓取的关键词、城市和页码。使用 request 发起 get 请求并获得响应数据。用 e tray 方法解析 html 文件中的标签, 并且将 diy 标签里面的信息抓取出来,存储到 datast 中, datast 中的数据使用 print 方法打印出来,这里 time sleep 三表示每三秒发起一次请求, 这是为了防止同时发起多次请求而触发反爬虫机制。返回获取到的数据列表,并定义一个方法用来创建招聘 cv 文件,将我们爬取的信息都存储到文件中。现在我们来运行这段代码, 输入搜索的关键词,查找 python 相关的工作,以及心仪的城市和夜马, 等待抓取成功信息加载结束之后,我们打开招聘点 csv 文件, 可以看到 python 相关的工作岗位信息已经存储在了里面。点击这个数据,也可以以表格的形式查看这些信息。相信通过今天的学习,大家对爬取网页信息的流程有了更深入的了解,大家也可以运用今天学习的流程去抓取其他网站的信息。

爬虫逆向实战教学系列第十六期猫眼票房数据采集,我们今天来看的是猫眼的票房数据采集,同样也是一样的右键选择检查,打开开发者工具,打开之后进入到网络面板当中,在这里去刷新抓取数据包,然后 ctrl 加 f 弹出来搜索框之后,再来去搜一下对应的这个数据。 我们来看一下这里的第一个是疯狂动物城二,我们可以搜一下他这个是零四,这个是零一,零一是疯狂动物城二,搜索疯狂动物城二二 搜索发现他在这里都有出现,一二三四五五个数据包里面都出现了,而且他这五个数据包都是一模一样的名字,那也就是说他在不断的去发包,这个猫眼他的确也是实时的去更新的,所以他在这里会不断的去发数据包。我们随便找一个来看, 在这个里面他的确有对应的一些数据,比如说什么上亿六十七天名称,他的一些百分比啊,其他的一些数据,那这个地方其他的数据其实没什么好说的,他都是正常的去获取就好了。就综合票房他是去给他做了加密了的这样的一个建值段里面的一个 number, 这个是做了加密的,所以我们在想象当中能拿到的也是这样的一个数据,你就需要去给他做解密,给他解回来,我们可以先去试一下右键去复制他的一个 c 二幺,在这里通过一个转换工具给它转换成 python 代码去复制一下, 我们这里创建一个拍子文件,猫眼票房好粘贴过来之后, cookie 给他解开,这上面的给他收起来一下,我们先来去测试一下能不能得到正确的数据。 print response 点 json, 它是 json 格式的数据,可以右键去运行,看一下能不能得到。是能够得到正确的数据的,它在这里获取到的数据的确也都是密文值, 那这个时候它其实是什么?就是字体加密,我们在这里的一个元素面板去看的时候,它这里也是不会显示出来的,来看一下这里,它也是没有显示的, 它是一种字体加密,那么字体加密肯定就会有字体文件,我们这里可以看一下,你会发现他这里每次去发一个 movie 的 数据包的时候,下面都会带一个什么?带一个点 word 的 字体文件,那么这个点 word 的 字体文件的 y r y 能不能搜到?我们可以搜一下 这个地方,给它拿过来一点,好给它搜一下这个后缀,其实它是能搜到的,而且它其实就是在什么,在这个数据包当中, 在这里有个 font 这样的一个样式,样式里面包含了这样的一个链接,所以我们也可以去取,可以在文档这里来看一下,它是直接字典去取值就好了。我们这里取一下这样的一个 font style, 这里给大家赋个值,赋个变量, 比如说来个 data, 那 么 data 去取这个链接,我们来去打印看一下。 print u r l 右键去运行,是能够得到这样的一个链接的, 得到了之后,但它这里还需要去做一下处理,是吧?因为我们这里要去取它,它里面还有一些其他的东西,当然你可以通过正直来去取,也可以通过一些字母串的处理方式来去处理,我们这里就可以去用切割的形式,比如这里用它来做切割, 切能切出来三个,我们去取最后一个,那么这就是点 split, s p, l i t。 用它来做切割,去取最后一个,取到了最后一个之后再来去对它做处理,我们把后面的这个给它去掉就好了。点 replace 啊, e p l a c e 去掉 定位替换为空,前面呢需要去给它拼接上 h t t p s, 这里再给它拼接一下,就是一个字体文件的 u r l 了。 h t t p s。 加个冒号吧。好,这里是 font u r l。 再来跑一下,现在这里就得到了这个链接之后我们就给他请求下载到本地,那这里再去给他这个字体文件,我们也给他单独的去带一个 adidas 过去,请求他这里就是一些这样的一个数据,我们来去再转换一下,因为他字体文件和普通的一些其他的文件可能不太一样。请求头我们给他单独拎一个过来。好,这里给大家再设置一个,比如说是放 adidas, 设置好了之后,这个地方收起来,我们就给它请求一下 v 字 open, 这就是猫眼点儿 word 这样的一个后缀。 w b 模式,给它写入 r s f f 的 right, 去写入它的什么静止格式的数据。 get 这个 y y 就 等于放调 y, y 也等于放了 y y, 点 content 去写入它的静止格式的数据。来跑一下,能不能给它下载到本地这个字体文件,这里就多了一个点 word 的 一个后缀文件,我们在本地打开看一下, 打开之后这里可以去双击,用对应的一个软件给他打开,稍等一下,这个字体软件他启动会比较慢,这个时候就可以看到他在这里就得到了这样的一个界面,这个就是他里面那些数字,零一二三四五六七八九,包括一个点、小数点之类的,他也是有的, 就可以去通过这样的一个字体文件,然后去得到他对应的一个印刷关系。那么怎么去获取他的印刷关系?他的印刷关系是什么东西?这里我们可以看到他的一个数据文件里面是这样的一个数据,他这里肯定是一个编码,就对应的是一个数字, 这里应该也不是不叫编码,他这里是一个相当于密文值,就对应了一个数字,那么就需要找什么?就需要去找到。比如说这个密文值他对应的是谁,这个密文值他对应的是谁,他肯定证实是变化的, 我们要去找到他的一个印刷关系之后,再来去把这样的一个密文纸给它替换成明文纸。至于怎么去给他做识,怎么去给他找到印刷关系啊?这里他其实要去用一些识别模块,我这里就有一个代码, 我们就可以去导入这个代码,去教给他识别就可以了。 from import 这个识别导入文件。好,怎么去用?这里就直接用它识别导入文件,去点这样的一个方法。 get 这个方法,咱们这里就得传一个路径过去。好,他这里过去得到一个结果, resuit 结果来打印看一下 print resuit 右键去运行,他会交给对应的识别模块去做识别, 那就得到了这样的一个识别的结果,比如说他把这个识别成了一个八,把这个识别成了一个九,对应的是一样的,这里会得到一个最终的结果字典, 这个字典我们要去给他做一下处理,这个一二零其实看起来好像要给他带上说不定是什么其他特殊的东西。那现在我们这里就可以去给他做一个处理了,这里他是什么?他是一个相当于密文值,对应上的是明文值, 那么你说这个密文值他和我们在想象当中看到的也不一样,他这里是这样的一个形式,是吧?这是因为他在这个地方是显示的实景值, 我们这里要去给它弄成十六帧制的,就需要去循环,循环这个 reset 点 item, 这样呢这个是一个字典,去这里我们可以去给它 for key value, 这里来打印看一下 key 和 value, 右键去运行就能够去得到这样的一个东西。得到这个东西之后我们就再去给它做一个,比如说十六帧制的转换 变成了这种形式,变成了这种形式之后,它这里依旧还是不太一样,但是它后面的位数是一样的,后面是四位,前面的零 x 不 一样。密文就是这样的一个拼接符井号 x, 所以 我们就需要去把这个零 x 给它替换成拼接符井号 x, 假如把零 x 啊替换成这个好, 那么这个就是我们的一个,比如说新的 key, 新 key 这里我们就再来去弄一个,比如说 font d i c 创建出来一个字典,这个地方就是一个 font d i c, 它的一个 key 就 等于这个铭文值,最后我们这里再来去让它得到最终的映涉关键字典得到了之后,现在我们就可以去循环这样的一个数据了嘛, 我们去取这个数据的,这里就没什么太多好说的,这个正常去循环取值就好了,这里直接把它代码给大家复制过来啊,差不多就是这样的一个形式,给大家做循环取值就好了。我们来就先跑一下,其他的没有去打印,就只打印了简单的一些 不需要去做解密的内容,那么现在需要去做解密的内容来打印看一下, print 它好,这个数据我们需要去给它做解密,我们就把这个数据再交给一个函数去做一下处理,我们就给它分成一个函数,就不在这个循环里面去写了。比如这里来个什么替换,他接受一个,比如说,嗯,现在我们这里要去循环这样的一个字典,循环这个字典, four, 这个 key, v, 这个 d, i c, atom 在 这个地方就可以去对 n 来做替换的, n 等于 n 点 plus, 将什么呢?将它的 key 值、密文值替换成什么?替换成对应的铭文值就好了,我们最后循环结束之后给它 return, return 这个 n 就 好了, 把这个数据给它传出去的是替换,这里是传入他接收,比如说就接受一个 n 来打印看一下 print n, 右键再跑一下,那么就能够去得到对应的一些数据了,它中间有有分号呢,咱们在它返回的时候把这个分号给它替换掉就好了。加入 plus, 将分号替换成空值来再跑一下, ok, 就 得到数据了。幺幺三五点三八来看一下这里是不是刷新,他肯定会变化幺幺三五点五一了,这里他咱们再跑一次,他这里是在不断的增长的, 现在这里也在变化,变成了六一了,幺幺三五点六幺了,现在这里六九了,他在这里不断的去加。好吧?这里我们就给他做解密了,下面的零点零,零点零零的也是正确的一些数据,这个就是猫眼票房的一个字体加密的一个逻辑。

同学们大家好,今天给大家带来一个新的 python 程序,就是通过 python 的 爬行技术来采集我们的一个招聘信息。好,那这边的话呢,我们先来看一下啊,网址是这个网址来,它用的是拉钩网啊,这个不知道有没有找工作的同学逛过啊,就这个网站。嗯, 好,那么在这个网站里面的话呢,我们可以通过这样的方式来进行数据的一个获取,比如说你先随便搜索岗位,我们以 python, 然后进入到这样一个页面,进来之后,哎,进来了吗?没收到 开始。 ok, 好, 进入了这个页面,然后呢你选择,比如说一个城市,我们以北京为例啊,选择北京,那么你在这里的话就能看到关于 python 这样一个啊,工作岗位,它的一个薪资啊和招聘信息等等之类的。 好,所以这样的话呢,我们的任务要求就很简单来抓取这些数据。好吧,这就是我们的一个任务要求。 ok, 那 先让我们看代码, 这里先前提示一下,我们这个程序代码呢,需要在 python 环境里才能运行,所以如果你没有安装 python 环境是运行不了的。好吧,那如果大家没有 python 环境的话,或者你没有 python 引擎这个排查开发工具,你可以在评论区留言,或者一三年后这个私信找我领取。好吧,都可以的。 行,那接下来我们来看一下这个程序的一个效果来,首先点击运行我们代码,运行之后,在这里的话呢,输入一个你要搜索的关键字啊,就是我们的岗位嘛,那这边我们就以 python 为例来输入 python 就 可以了。 好,输入 python。 第二个呢,请输入对应的一个城市,你要搜哪个城市?比如我们这边是以北京为例,那我们就搜索北京。 好,然后第三个你需要多少数据呢?这里的话呢,我们是以页数来做比例的,比如说你要抓几页数据,在这的话呢,我们就抓取三页数据为例。好吧,那不抓多了,三页数据够了,来数个三,然后回车。那么这里的话呢,他就会开始抓取这数字信息了,我们这里稍等一小会, 那稍等一下会儿,它这是一般它这里是隔三秒钟抓取一页。好,那么抓取完毕了,抓取完毕之后的话呢,这个数据它会直接保存在一个 c s v 文件里边,就这样一个文件里,我们来打开看一下,打开所有的自动管理器,然后的话呢, c s v 可以 直接用 w p s 打开,所以我们直接双击打开一下。 好的,那么可以看到就是这样的一个数据了。嗯,它这里应该一页是十五条,所以我们直接双击打开一下。好的,来可以看一下。 这是左边第一列的话呢,是他的工作岗位名称啊,做什么的?比如说这个 python 工程师,对吧?还有什么这个数据开发工程师,还有像价格是程序员,各种各样的非常多啊,还有什么人工智能之类的。 第二个话就是他所在的一个地区啊,在哪上班?因为我们刚说的是北京城市,对吧?啊?说的是北京,那北京的话呢?这边就有很多的,比如其他哪个区啊?是不是什么海淀区啊之类的?这里很多。 然后第三个就是他的一个薪资啊,可以看到这个薪资区间的话呢,都在这个范围内的,对不对?呃,一般是二十 k 到四十 k 左右吧,差不多。 再就是关于他的一个要求,他的要求呢,比如说你所对应的工作年限,你有几年经验,然后以及的话你的这个学历要求,是吧?一般是本科了。再然后就是第五一个啊,第五一个的话呢,就是关于他的一个公司,公司的名称 啊,这个哪个公司招的?比如第一个是微博,那么我们可以看到这边呢,就有微博这样一个名称。然后第六个就是关于公司的一个介绍啊,那这个介绍话就是对于公司的一个信息了,在这里我们可以看得到吧,就是来你自己对照一下关于名称,然后的话呢薪资, 然后这个工作年限要求和学历要求,以及他所对应的公司名称,公司名,这个是微博,对吧?然后也就他这个公司本身的介绍,比如说社交媒体上市公司两千人以上, 对不对?所以呢这也都能对得上,那么你可以基于这样来采集这关于我们所对应的一个岗位信息啊的一个要求。 好的,那这是我们这一个程序的一个功能。 ok, 那 强调一下这个数据保存呢,需要用到 c s v 这个工作啊,是一个库啊,这是一个自带的库,但是你用的时候需要注一下,好吧? 行,然后中间的话做数据查询,我们是用叉 pos 线的,所以你需要掌握一些叉 pos 的 一个使用。 ok, 那 关于这个程序呢,我们就给大家讲到这里。

大家好,我是拍成老包,那么今天呢,呃,带大家深入一点啊,学习动态数据的采集,那么今天的网站呢,是这个啊,先按照网站,然后呢,我们的目标是什么?目标把这一些课程的标题啊给它采集下来啊, 然后呢,那这个页面呢,假如我们按照以前的方式去采集的话啊,往往这个页面啊,这个数据啊是拿不到的, 页面这个数据是拿不到的,因为这些数据啊是动态的啊,他的数据并不是和网页原码一起返回到这个浏览器,而是先返先先从服务器啊返回这个页面的框架, 然后通过一个一段 gs 代码,再向服务器发起另外一个请求,得到了这一串数据,然后网页再把这个呃数据给展示出来,那么我们按照以前的那种采集的方式啊,是得不到数据的。 好,那今天呢,这个网页啊,这个数据怎么获取呢?我们首先呢要找到这个数据的接口啊,这个数据的接口,我们首先啊按 f, 按 f 十二啊,或者你鼠标右键点击检查都可以啊, 然后啊,看到右边这里有个像 wifi 一 样的标志啊,点开,那么这个呢就是监控啊,网络请求的,我们把这个页面刷新一下, 好,看到了吗?这里有个 date 机程,这个呢就是页面的接口啊,你看第一个标题是 excuse me? 第二个是,呃文件的名称啊,文件的名称啊,零零一, excuse me 对 吧?好,那我们需要的就是把这个数据给当下, 那么这个数据怎么去当呢?其实非常简单啊,你看啊,我们呃找到这一个接口之后呢,鼠标右键复制 啊,复制 u r l, 然后把这个啊拍成代码啊,拍成这个 r d、 e 啊,这个啊,软件打开,然后呢,我们还是用到了之前的网络请求库啊,也就是 request 库, 好先把它导进来啊,导进来之后呢,我们通过 request 点 get 好, get 里面呢,我们需要把这个接口的地址留给他,那么这个 get 请求呢,会返回一个结果啊,我们用 response 啊 去接受它,也就是我们把这个啊 get 请求获取到的结果保存到变量叫 response 的 这个变量中,然后呢, 我们把这个结果打印一下,看它到底是什么东西啊? switch 点 text 对 吧?好, 我们鼠标放在这里啊,点一下,那这个呢是调试啊,就是断点,然后,呃,打开调试之后呢,我们鼠标右键这里呃,点,这里有个小虫子一样的地方啊,点击一下, 好,这个时候程序就会去运行了啊,运行之后结果我们鼠标放在这里啊,就可以看到,你看这个结果是什么?是一个数据对吧?这个就是我们需要的数据啊,那我们需要的数据拿下来之后呢,就需要对它进行解析啊, 看,这是它的原始的数据啊,原始它其实是一个什么?它其实是一个字串啊,你看它的类型是 str 啊,是一个字串,那是一个字串的话,那怎么去解析呢? 别担心啊,解析也非常简单,那 python 里面啊,有专门针对像这种数据格式的啊解析的工具啊,把这个数据啊,把它转换成 python 里面的数据结构不就可以了吗? 你看它返回的这个结构啊,是一个标准的结构,就是 jason 结构啊, jason 呢是一种特殊啊,一种特别简单的文本格式啊,专门用来啊,在不同的地方,比如说手机 app 或者服务器,或者两个程序之间传递数据的, 我们可以把它理解成为一个啊数据的快递单啊,格式固定,不管谁都能够看懂,那么这是一种遵循,一种格,一种标准格式的一个啊数据啊, 所以我们不管是 python 也好啊, java 也好,或者其他编程语言也好,他们都能够通过一种标准的库啊,去把它给解析出来。那接下来呢,我们用 啊, python 里面的一个标准库啊,去把它解析啊,怎么解析呢啊?能通过导入一个接生库啊,导入这接生库之后呢,我们用 jason 啊去 load 一下啊, 然后漏的哪一个内容呢?哎,把这个返回的内容丢给他,好,返回内容丢给他之后呢,那么这个漏子呢,它也会返回一个数据啊,返回一个数据呢,我们又把它保存到 datas 这个变量里面,然后呢,我们再打印一下这个 datas, 好, 然后鼠标在这里点一下,打个断点啊,然后再开启调试。 好,你看前面的 text 啊,是文本类型啊,也就制服串,但是到这里的时候啊,经过这个 jason 点漏字啊,这样转换之后呢,那这个 date 是 什么? 这个 date 已经变成了什么?变成了一个字典了,对吧?那变成字典之后,那我们就可以很轻松地对它进行处理了, 好,那我们接下来呢啊,通过字典的方式对它进行处理,那这个字典呢,里面呢,有四个键 啊,第一个呢是是一对吧?第二个是二,第三个是三,第四个是四,那这个啊,相当于是第一册数据,第二册数据和第三册数据。好,那我们假如我们要取第一册的数据,非常简单, date 点 get 一,哎,这样的话,就把啊第一册的数据啊给拿到了啊,我们看一下啊,嗯, book 一 等于它,然后我们打印一下, book 一 是什么东西啊? 好,那这个 book 一 呢,我们得到的是一个列表,对吧?你看鼠标放上去啊, 不要放上去,它是一个列表,是一个中括号啊,括起来的,然后呢,里面有很多的项,那每一每一项啊,里面的每一每一个指向,实际上又是一个字典啊,你看这里有个标记啊,叫 dick 的, 实际上上又是一个字典啊,然后呢,我们就可以对它进行循环啊,把里面的内容进行循环, for item in book book 一。 好,然后呢,在这个循环里面我们去 print 一下啊, item, item, 它是一个字典啊, item 是 一个字典,那那是字典的话,我们就可以通过 get 的 方法啊,去获取里面的 key 对 应的 value 啊,那里面呢,有些什么样的 key 呢?你看一下, 把这点开,你看它的 t 有 两个啊,一个是 title, 一个是 file name, 那 我们主要获取的是把这个 title 给拿出来啊,所以呢,我们通过 get title 就 可以了啊, title t r t l e。 好, 然后接下来呢,我们重新运行一下,把这个断点去掉啊,重新运行 好,那已经跑出来了啊,你看 它结果是什么? excuse me? 对 吧?然后, sorry, so nice to meet you。 好, 这样呢,就把所有需要的这个数据都给采集下来了。好,今天呢,就讲到这里啊。

那我们就随便选了一个啊,我随便选了一个视频就是。呃,就这一个啊,这什么 ai 动画啊? a ai 电影动画的一个什么全流程就是这个。嗯,就我们先爬一下这个视频, 但你选其他的话也是一样的,反正思路流程都是。嗯,没什么差别的。 ok, 那 我们要去做这个数据采集的话还是一样的,我们按照基本流程啊,按照基本流程给大家去讲实现的基本 流程。这个爬虫的流程的话,它分为两步啊,第一个的话是什么呢?数据来源分析,然后第二个的话是代码的实现步骤啊,分为我们这两步啊, 数据来源分析的话,呃,第一个明确需求。第二个抓包分析步骤呢,分为四步,发送请求、获取数据、 解析数据和保存数据。 ok 啊,这是我们的流程了,它的话是适用于啊,适用于任何网站的一个数据采集都是可以的,就你换一个网站的话,你也可以按照自己的流程去做。 首先明确需求的话就是明确采集的网站以及数据内容。 那咱们的今天的网址和数据数据的话肯定是视频内容了,网址的话就随便选了一个视频啊,就这个。 嗯,给个短链接吧,那这是我们的需求。然后第二个抓包,确定了你要采集哪个网站上面的什么数据之后。嗯,第二步抓包呢,就是通过浏览器的开发者工具分析对应的数据位置 啊,去分析一下,我们想好这个视频内容它在什么地方。常规的分析的话分为三步啊,打开开发者工具,刷新网页,通过关键字搜索查询。好吧,就像那这三步啊, 第一个的话打开就比较简单,你就直接在这个浏览器的页面,就是在你的要抓取数据的那个目标页面,按 f 十二就行了, 页面中按一个 f 十二,任何一个浏览器它都会有这一个开发者工具,任何一个浏览器都有,只是说你用哪个浏览器的话都无所谓的。好吧,然后第二中重点是这个啊,然后先打开啊, 一步步来啊,那我们打开好,打开之后的话我们刷新一下, ok, 打开刷新之后的话,这边的话就会有相应的一些数据出来了,一共有一百多个请求还是挺多的啊,马上就两百个了, 一百一百多个请求啊,现在截个图 打完之后的话,就相当于我们要在这一百多个,那现在目前这地方是一百九十七个,对不对?我们就需要干嘛呢?需要在这一百九十七个当中啊,一百九十七个数据包中找到视频数据所在的一个位置, 那一百多个的话你要去找是不是比较麻烦对不对?好,那怎么去找呢?也很简单啊,就关于啊,关于咱们的一个,嗯,我们应该 有,呵,我,我写在前面啊,就关于什么呢?视频数据的一个分析啊,这里要单独写一下啊。 首先第一个的话,我们要去找视频的话,视频他会有个链接的啊,会,一般常规来说会有个视频链接地址,就我们教大家怎么去常规操作啊?首先查看视频链接地址 啊,先看链接,这看链接怎么去看呢?可以通过数据过滤的方式啊,单独过滤我们的一个媒体文件,也是我们视频的数据内容,也就是在这里啊,他在这个地方的话是可以做一个数据过滤的 这一块啊,是属于它的一个数据过滤的功能区, 然后这个媒体的话就是用来过滤我们的一个音频或视频数据的, ok, 用过这个分割符啊。呃,你,你首先啊,我们可以点了看一下啊,点了看了之后的话,它是不是没有内容, 对不对?你,你点了这个媒体进行过滤,我们刚刚讲过全部的话,它是表示的是整个网站所有的一个数据包啊,所有的一些数据内容,无论是图片、文字、字体、 g s 代码、文件、 c s 样式还是七七八八的都会在这个里面。 那媒体的话是过滤音频和视频的,但是我们在这个地方的话,当你点击过滤之后,它没有内容,对不对?这里会出现一个问题,就是你点击媒体过滤 媒体啊,并没有什么呢?并没有他的一个视频链接没有,没有的话他有两个原因啊。第一个原因是什么呢?可能是视频没有播放导致资源没有加载出来。 对,所以说你你可以尝试干嘛呢?我们首先可以尝试播放一下啊,播放一下啊,让整个视频播放一下, ok, 他 播放了对不对?播放的话你看这里有东西吗?还是没有啊?他还是没有对不对?还是没有的话,你就考虑第二个问题了 啊,就是我们可能是一个流媒体的格式啊,就是它视频可能是一个流媒体,就一个 m 三一八流媒体的一个情况啊?什么叫做 m 三一八流媒体呢?就是它会把一个完整的视频内容分割成 n 个视频片段, 然后所有的一个片段的话啊,都存在一个什么呢?一个 m 三一八的文件中啊,就大概的给大家了解一下,就它不会有一个完整的, 不会有一个完整的一个链接,而是分成了很多很多个一个小片段啊,很多小片段。像这种情况的话,一般啊,一般的话就像我们的一些网课类的,还有影视资源类的 影视资源,就影视像电影啊,电视剧啊啊,这种啊,这大概率啊,大概率都是什么呢?都是这种 m 三 u 八的一个流媒体文件, 不出百分百,百分之八九十都是啊,百分之八九十以上的话都是啊,基本上都是啊,基本上都是。 所以我们在这里的话,你是呃,看不到啊,所以说你看不到它完整链接,那这这个地方的话,呃,那你怎么去判断这个它是不是 m 三一八呢?你可以直接搜啊,你可以直接搜你,或者说你在这个地方,第二步的话,你就直接搜索什么呢? m 三一八 啊,就以这个 m 三 u 八作为关联字,因为我们说了是通过关联字去搜,那我们通过分析的话,它可能是一个 m 三 u 八的流媒体文件,那我就只要找所有的一个片段所在的位置嘛,咱就可以直接以这个作为关联字去搜啊,那你就点击这个搜索按钮,然后直接搜 m 三 u 八 回车,那直接搜这个 m 三一八回车,你看它这边的话就会加载相关的一些啊接口出来,好给大家截个图啊。 哎,点这个啊,这个话就是我们的一个搜索按钮, 然后第二步输入搜索内容回车,回车之后的话,它这边啊,这个的话就是它返回的结果。只要是什么呢?只要是含有搜索内容的数据包 都会返回。无论说是它链接里面是含有,还是它响应数据当中含有,还是说它的一个响应头啊?啊?当中是含有这个 m 三 u 八这个字段呢?都会进行一个返回, 那进行返回的话,那哪一个是我们想要的呢?对啊,这么多个,对不对?虽然说对比起我们两百多个,一两百个的话,它还是有那么些嘛,这里有七个嘛?对,那怎么去分判断呢?看后缀啊,看后缀,首先你,你看这些, 这个是不是一个点 gs, 这个话是不是也是一个点 gs? 像这些点 gs 的 话,它其实属于什么 gs 代码的文件啊?这个话都是属于 gs 代码文件。 然后前面的话,你看这个地方它是一个点 ts, 这个点 ts 是 什么呢?就是我们的视频片段链接, 那就视频片段链接,然后在这个地方它不是还有一个什么呢?还有一个点 m 三一八。打这个点 m 三一八的话,就是我们那个 m 三一八文件链接, 对不对?然后在这个地方的话,它还有一个比较特殊的,就是一个 video play 啊,这个话就可能说你看不出来它是一个什么格式,对不对啊?它其实的话就什么呢?我们的视频片段链接,它是来自于哪里啊?来自于这个 m 三一八文件, 我感觉有点卡,说实话,然后这个 m 三一八文件链接的话是来自于哪里啊?来自于这个 play 啊,这个 v video play 里面 啊,它是这么样的一个形式啊,这么样的一个形式,所以其实的话,我们想要的一个数据的话,应该是在这里啊,在这个 video 杠 play 里面啊, video 杠 play 里面可以给大家看一下啊。那首先在这个 m 三一八文件当中,你看这里的话,它就是存在了很多个 ts 的 链接, 看没有零八零九幺零幺幺幺幺幺二幺三,就是他把整个完整视频是分成了很多很多各种小片段的,然后每个片段多少呢?那这个是十六秒的,然后这个是九点八秒的,这个是七点三秒的啊,这是他的一个有多长? 就相当于我们整个视频的话,它一共是九分多钟嘛?九分多钟它一共是分成了多少个片段?我们可以划到最下面啊,到五十八啊,它从零开始的,从零零开始的,到我们的五十八,就相当于一共是五十九个片段,就九分钟的一个视频,它就分成了五十九个片段, 懂吗?就是都在这个什么呢?都在这个 m 三 u 八的一个文件当中,那这个 m 三 u 八链接是从哪里来的呢?就从这个 videoplay 里面来的, 那在这个 videoplay 里面你可以看到,哎,它这里面的话就有我们这个 m 三一八链接,并且的话我们的一个什么呢?视频标题也也在这个地方 的,我们的一个视频标题这里面也有,对不对啊?它的一个链接是哪一个呢?就这个啊,这是我们的一个接口啊,这是我们 m 三一八 链接生成的一个接口,能不能理解啊?目前在这个地方能理解的扣个一啊,有疑问的话扣个零, 目前这一部分能理解的扣一,有疑问的话扣零 能理解,是吧?好好,那我们这个链接的话它是一个什么呢?它是一个 pose 请求啊,我们当刚刚发现的话它是一个 pose 请求的一个方法, 看到没有?是一个迫使请求啊,迫使请求的话我们是需要干嘛呢?需要向服务器携带一个什么呢?我们如果说你要对于这个链接请求是需要发送一个迫使请求,那迫使请求的话是需要向服务器携带一个表单数据的, 也相对于我们需要携带一个参数去进行请求,这个参数的话在哪里去看呢?载荷中查看啊,在载荷里面需要看一下它的一个参数啊,就是那这个话就是它的一个表达数据,这个话就是它的一个参数, 然后参数里面的话有个什么呢?有一个这个,有个这个值,这个值好像每个视频都不一样。好像啊,我等一下可以,好像每一个视频都是不一样的啊,这个参数啊,貌似。 对啊,貌似啊,就是每个视频好像都不同,好像是不一样的,好像是不一样的, 但我没记错的话,当然你可以对比一下啊,就每个视频的话这个不一样的,所以你可以大概的分析一下呢,分析一下这一个参数啊,参数是如何生成的?这个参数怎么生成的话也比较简单,你直接去搜就行了啊,直接复制粘贴搜,直接你全区搜索啊,搜一下这个参数从哪里来的? 那一搜的话就搜到了啊,那在这个里面看到没有?那它的一个一个 token 值在这里啊,这里话就是有它的这个参数,然后这个参数是从哪个链接里面?就从这个链接里面的 啊?它的参数的话是从哪里?从这里啊?在这个地方生成了什么呢?生成了这个 token 的 一个参数,也就是它 这个链接是什么链接?这个链接眼不眼熟?它的话就是我们视频的一个详情页啊,就相当于我们在视频的详情页当中会生成这一个参数啊,会生成这个参数,所以说总体来说的话啊,做一个简单的一个小结啊, 啊?小总结,嘿嘿,做一个简单的一个小结。首先的话,第一个我们要获取什么呢?获取视频内容对不对?获取视频内容的话,我们分析它是干嘛呢?分成了 n 个片段, 就是我们所说的一个 t s 链接啊,分成了 n 个片段,然后它所有的片段啊,所有的片段在哪里呢?在 m 三 u 八的文件中 对不对?在这个 m 三一八的文件里面才有我们所有的片段。那这个 m 三一八文件链接从哪里来的?那 m 三一八的一个文件链接是从哪里?从那个 video 杠 play 的 一个接口中返回啊?这里面的话就包含什么呢?包含视频标题 和它的一个 m 三八零键,对不对?但是的话你要请求什么呢?你要请求 video 杠 play 这个接口 需要传递一个参数啊,传递一个关键参数啊,就哪一个?就这个需要携带一个关键的一个参数。你其他的话,这个是视频 id 啊,这个是视频 id, 这个是 id, 然后后面的话是固定的,然后主要是这个参数 对不对?然后这个参数又是从哪里来的呢?啊?然后第五个啊,这个参数啊,是通过什么呢?通过他视频详情页面的网页源代码中可以获取, 对不对?这是我们整体分析的一个流程啊,但我们写代码的话怎么去写呢?得写代码得从下面往上写,我们分析的话是一二三四五这样子分析过去的,但是我们写代码的话得从五四三二一这样去写。 打,这是分析的一个流程啊,这是分析的流程 是一二三四五,然后如果说你要去写代码的话,就得从上往下,从下往上写啊,这个是代码的实现流程, 就你得先什么呢?先获取这个参数啊,获取了这个参数之后传到哪里呢?传到这个接口里面,然后请求这个接口,获取 m 三一八链接,获取了 m 三一八链接之后的话,我们再获取它所有的片段,获取所有的片段,再获取所有的视频内容,懂了吧? ok 啊, 好啊,就大概的了解一下啊,所以我们实际的步骤的话还是按照这四步,虽然说你看一二三四是挺挺那个的,但我们实际的实现步骤是这四步啊,基本的步骤是这四步, 发送请求的话,就是模拟浏览器对于我们的 u l 地址发送请求,获取数据呢,那就获取服务器返回的响应数据 解析,提取我们需要的数据内容。保存,把提取出来的数据保存到本地文件中。 ok 啊,这基本的话是四个啊,但是我们实际的话是需要干嘛呢? 案例,实际的一个步骤啊,实际的一个步骤,我们是需要发送多次请求的,因为根据啊,根据不同的一个网站的一些数据获取情况, 我们可能是需要干嘛呢?需要发送多次请求才能拿到我们想要的内容,你像我们这里的话就得发送多次请求,那,那我们的一个什么第一次请求? 第一次请求啊,第一次请求是干嘛呢?获取哪一个?获取这个参数啊?获取它。 那我们的一个什么呢啊?我们发送请求请求的网址就是哪一个请求的网址就是这个 视频详情链接,然后获取数据,获取是他的王源代码,然后解析数据的话,就是提取我们这一个参数, ok, 这第一次请求,然后我们第二次请求是获取视频标题,还有 m 三幺八链接。 那这边的一个发送请求的话,它请求网址就变成哪一个?变成这个 video play 了,那个 video 刚 play, ok, 啊,就这个结果了啊,就这个 啊,请求网址的话,就它了啊,就变成它了,对不对?然后获取数据的话,那就直接获取它的一个响应数据啊,就它的一个也是响应数据,那个也是响应数据啊, 响应获取它的一个响应数据啊,就这么写吧,解析数据的话就提取这两个,提取这两个东西就行,然后第三次请求, 第三次请求是干嘛呢?获取所有的片段内容啊,片段链接,所有的视频片段链接,也就是我们的一个 t s 链接,那这边的一个发送请求的话,那请求网址就变成什么呢?变成 m 三一八链接了, 一样的啊,获取它的一个数据内容啊,这里的话获取的是什么呢? m 三一八的文件内容啊, 然后解析数据,提取什么呢?所有的一个片段, ok, 然后第四次请求就是获取视频啊,就保存完整的视频内容, 那这里的话也是发送请求哦, 请求网址的话就变成哪一个呢?变成这个链接了啊,变成这个链接了,然后获取数据,那就是获取视频内容,获取了视频内容的话就不用解析,直接保存 对,保存所有的片段,合并成一个完整的视频内容就可以了。 哇,这是整体的,基本的话是发送、获取、解析和保存基本是这四步,但是你根据网站的数据,实际数据获取不一样,你看是需要发送多次请求的,你按照我们今天这个的话,你看就是得发送什么呢?发送四次请求, 对,你最终的话才能拿到所有的一个片段啊,所有的片段,所以我们分析的话,你看对不对?我们刚不是讲了吗?分析的话就是一二三四五这样子来的,但我们写代码的话,就先拿到这个,然后再请求这个链接,拿到拿到拿到,他拿到之后的话再获取所有的片段,然后获取所有的片段,之后再获取所有的内容,就是从下往上写的, 懂了吧?好吧,这个的话就是步骤啊,那我们接下来的话啊,就直接去写代码了,就每个步骤每一个东西的话,整体的思路流程就是这样子的,那我们接下来就写代码 啊,写代码 发送请求啊,发送请求的三个基本点,第一个模拟浏览器,第三个发送请求啊,就这三个啊,就这三个 模拟软件的话,我们使用的是什么呢啊? 这个的话就使用什么呢?请求头的参数啊,使用请求头中的一个参数内容 进行一个模拟伪装。请求头在哪里?其这个东西的话,你只要知道啊,只要知道在哪里复制哪些 参数即可,知道从哪里去复制复制哪些东西啊就行了。他在哪里复制呢?我们一开始的话,嗯,一开始的那一个请求网址大家应该是知道的啊, 就这个啊,就这个链接对不对?那它的参数是不是在这里面?好,我们加的话就加一个什么呢?加个 cookie 啊,这 cookie 还挺长的。加个 cookie, 然后防盗链你想加加不加也没事,加个约也可以,我们给它放到一个什么呢?字典里面 粘贴一下。嗯,防盗链不加了吧,就加这两个就行了啊,加这两个就可以了。 cookie 的 话是什么呢?用户信息常用于检测是否有登录账号。 登录与否啊,都有什么呢?都有 cookie 的, 就你没登录账号的话,它也会有一个 cookie。 然后这个 us agent 的 话,就是我们的用户代理 表示浏览器和设备的基本身份信息来用这两个的话可以做一个简单的模拟伪装啊,这个的话它也是一种什么呢?一种简单的一个反反爬手段啊, 也是一种简单的一个反反法手段。 ok。 然后网址的话就是我们抓包的链接啊,直接拿过来就行了,有要 给个短链接吧,不想给那么长,给个短的也行。视频啊,这个话就视频视频的一个详情,打详情的链接就它啊,然后发送请求的话啊,这个发送请求还是相对而言比较简单的, 就是使用什么呢?使用一个第三方的一个模块 啊, request 去进行请求,记得啊,需要安装啊,需要安装,安装好了之后只要注意它的一个请求方法, 还有它的一个请求参数就可以了啊,注意这两个小的东西就行了,一个是方法,一个是参数,它的方法的话就是 get, get 请求的话,它这里面是携带了一个这个 id 的, 这个 id 的 话可以不加啊,就我们直接就这样子写就行了,就直接导入模块进行请求就可以了。 对啊,就直接 request 啊,点上一个什么 get, l 等于 l, hald 等于 hald, 再用一个变量名去接收就行了。好吧,这个话就是我们发送请求的一个基本代码,基本代码就这样子的, 就这么简单啊,第一步的话就这么简单啊,第一个的话就这么容易啊,看你们有没有疑问想问的。 然后第二个获取数据啊, 获取数据的话我们我们要拿到它的源代码啊,是要获取这个网源代码就获取数据的话,三种方式啊,你们大概了解一下,一个是 response 点 tax, 哎呦, response 点节省,这个都会吧,这个都知道的话扣个一啊,不知道的话扣个零,就不用讲那么多了,因为有一些比较简单的东西的话,可以稍微给大家过一下, 返回了一个注串啊,因为这个东西比较简单啊,这个话是获取响应的一个键,数据返回的是一个字典,或者说是列表,嗯,它的话是二进字,数据返回的话也是个二进字 啊,不知道是吧?给大家稍微说一下啊,二进字的话就主要是获取像图片的那些内容, 主要用于什么呢?像获取图片啊,因为像图片、视频、音频这些都是有一个链接的啊,所以我们要获取视频啊,图片啊、音频啊,或者说特定格式的一些文件。什么叫特定格式的文件呢?像压缩包、 psd, 然后 pdf 啊,这些都是属于特定格式的一些文件。你要获取这些数据内容的时候,你比如说获取图片内容,获取视频的数据内容, 咱就是请求它的链接,请求视频链接,或者说请求图片链接,然后获取它的二帧制啊,一般的话就是用于什么呢?就是作为数据保存的时候,咱就把它的二帧制拿到之后啊,二帧制的数据拿到之后,然后进行一个数据保存, 然后这个接收数据的话啊,它有个特点,就必须是一个什么呢?完整的或者说标准的 监测的格式。打,否则的话会报错啊,会报错,打,否则的话会报错。就是你要么是一个字典打,要么是一个标准的一个字典数据啊,字典格式的一个数据,你要么是一个什么呢啊?标准的一个列表的一个格式数据 打,除了这两个以外啊,除了这两种情况以外,任何情况啊?主要是不是它只要不是标准字典或者说标准的一个列表,那你就不能获取节省,就会报错。打,只能是一个标准的,就比如说像我们前面看那一个,看到那个什么 video game play 啊, 打 v 六刚 play 的 话,你看这个的话就是一个字典数据,那就是花括号包线嘛,这个的话就是一个标准的,那像这个的话就可以获取节省,那我们今天的话,呃,刚开始的这个接口它是一个什么, 对吧?它这里话就是一个这种王源码,王源码的话你只能获取文本啊,就获取文本啊。王源码的话我们一般都获取的是文本,像它这个的话,其实任何情况下啊, 都可以获取文本数据啊,就节省数据的话,你获取文本返回的就变成了一个字串了, 就是数据类型会发生改变。原本如果说它是个标准的字典,你获取的是,呃节省的话,它返回是个字典,那你如果说你获取的是文本,就变成字串了,懂了吧?那如果说是二进制数据获取的话,它返回的就是一个乱码, 把它返回变成了就是乱码的一个形式,就是哪种样子呢?嗯,看一下,就比如说这个是一个图片,那就变成这种,这里不是一个图片吗?然后如果说你要获取它的文本的话,就变成这样子的一个乱码,这种乱七八糟的一堆东西,懂了吧? ok 啊,所以说我们在这个地方的话就获取什么呢?响应的文本数据,也就是它的一个网页源代码 h t m 等于 response, 点上 text 打印一下啊,看一下我们的数据有没有进行一个输出, 那这边内容的话就出来了,出来了之后的话,我们是不是要看一下我们想要的那个内容有没有啊? 我们想要的那一个数据在哪里啊?是不是这一段我看他会不会变啊?可能会变啊,对吧?你看是不是变了,所以说还是得搜这一个 呐,这一段内容是他是会变的,他是会变的, ok 吧?前面这两个发送请求和获取数据的话有没有问题?想问的没问题扣六,有疑问的话扣五。如果大家都没问题的话我们接下来就解析数据了 有疑问的话可以扣个五,然后说一下你的问题在哪里就是哪里,不懂的话都可以问就。呃听课不问课后的话就跟我们就最近有有些有些同学啊有某些同学他 在听直播课程的时候就是我经常会问大家有没有哪个地方不懂有没有什么地方不清楚你可以说但他不说不说了然后咱们助理老师问他啊这节课听得怎么样他说听不懂太难了。 那我寻思在课堂中问你哪里不懂你又不说你不说的话你又说你听不懂客户的话又抱怨说哎又听不太懂,那那这能怪谁呢对吧?这这很无奈啊这没得办法。那那那那没法啊那没法了。 好我们来解析数据啊解析数据的话我们这边选择什么呢?选择使用正则啊选择使用正则装高冷导入表达式啊。正则表达式模块。 那不知道他是高冷还是什么反正学习是你自己的事情学这个东西的话是大家自己的事情啊。因为你来学习来听课的话肯定是想要能够学会能够干嘛呢?能够掌握一些东西嘛,对吧?如果你有地方听不懂你不说那损失的是你自己啊。 对我而言的话是没有任何损失的啊对我而言是没有任何损失的。 来我们来取一下啊正则啊正则。我们要拿到什么呢?拿到这个 id 啊把这个参数给它拿出来。对啊,把这个参数拿出来,我们怎么去用呢? 呃,提取它那一个 token 参数啊,我们用个变量接收吧, 就这样子复制一份,前后复制一部分啊,我们要的是这段内容,对吧?我们前后复制一部分粘贴,然后这一块是我们想要的,就用个括号点新闻表示就行了,然后从哪里匹配?从这个 html 里匹配,然后取个零, 这样的话我们这一个参数就拿出来了。这个正则看的懂不? 正则表达式的一个简单,使用 这行代码能不能理解?不理解的话就说啊, 理解是吧?行啊,理解的话我们这一段内容的话就获取到了,就是我们第一次请求所要去干的事情。第一次请求啊,要做的事情我们就做完了, 那也就是我们第一部分啊,要去做的就是把这个参数给他获取到就搞定了。 拿到这个参数的话,为了让我们的代码的可读性会更好一些啊,让我们的代码的可读性会更好一些的话。呃,我们可以选择什么呢? 可以选择定一个什么呢? d f get token, 定一个函数啊,让我们代码的可读性更强,我们可以定一个函数 return token。 那 这一部分的话啊,这一部分代码的话就是干嘛呢?获取我们 token 参数的啊,不能叫 token 参数,因为它里面那个参数名字不叫做 token 啊。就获取这个参数的啊, 咱们定一个函数,给它封装成一个函数啊,封装成一个函数?对,这是我们第一部分的一个内容。好,那我们接下来第二部分。对啊,第二部分的话还是一样的啊,第二部分的话,我们是说什么? 发送请求,请求网址变成它了啊?一样的啊,发送请求请求网址的话就这个, 给个 link 换个变量名,这个话就是 m 三 u 八的生成接口 啊,生成接口就这样写吧。那就它一样的啊,去发送请求,发送请求,但是我们这个请求的话,是不是需要携带一个什么呢?携带一个表单数据啊,就是一个请求参数, 需要加一个请求参数,对不对?他那一个请求参数是哪一个? video game play, 那 这个话就它的参数 是不是要要加这个参数的?然后我们这个值啊?这个东西的话从哪里来的?是不是从啊前面这里获取的对不对?是不是从前面这里获取的啊?所以说我们可以接受一下啊,可以接受一下, 对不对?这个参数是从这里面来的啊,从这个函数方法进行了一个返回的啊,从这里返回的,对吧? ok, 然后发送请求,获取响应的接收数据,因为我们这边的话拿到的是一个接收嘛,就我们直接获取接收就可以了。直接获取接收就可以了。 link 啊,直接接收 data 吧。 request 点上 post 预要等于什么呢? link 点上接收, 那运行, 嗯, 那我们这一部分数据是不是也就获取到了?你就你看到我现我现在写的代码跟前面是不是一样的?也是一样的吧,三步吧,发送, 然后获取,发送,获取,发送请求,然后获取数据。只是说干嘛呢?只是说它的一个变了,就它的一个方式变了,原本是一个 get 请求啊,原本我们刚刚的话是一个 get 请求,那现在的话就变成一个 pos 请求了, 那 pos 请求的话,我们需要携带一个表单数据的,所以我们就把它的参数也拿过来了,在请求的时候,所以我们就多加了一个东西啊,多加了这东西,然后后面的话是获取什么呢?获取是接收嘛, 就跟我们前面讲的这个东西是一样的,那也是请求网址发送请求获取数据,我只是把这一个写成了一行代码,所以在这个地方的话,你也可以在这里点上一个 text 啊,也是可以的。就写成了一行啊,可以写成一行代码。 ok, 这一块的话有没有疑问?有疑问的话啊,目前能跟上的扣六,有疑问扣个五。好吧,能跟上扣六,有疑问扣五。你看你哪行代码。不理解你就直接说啊,旁边的话就是有代码行数的, 旁边这里的话就是有代码行数的,你不理解的话你就说代码行数也行,你先扣个五,扣个五之后的话,你看说的是哪一行, 没有是吧?没有的话那我们就来提取什么呢?视频标题还有提取 m 三一八链接的, 这里的话,因为我们这个是它是接什么就返回的是一个字典, 字典的话我们就通过字典取值的方式去做就行了啊,通过字典取值的方法去做就可以了,我们来直接写啊,字典取值,首先这个是标题 title, 等于接收 data 取它啊,根据冒号左边取,冒号右边,然后 m 三一八链接的话就这个 video 啊。 嗯,改个名字吧,改成 m 三一八元啊,改个名字啊。对啊,改个 m 三一八元。那标题和这个链接的话就出来了 啊,标题和 m 三一八链接就出来了。对,出来之后的话啊,同样的方式,我们给它定一个函数, get in for 啊,同样给它定一个函数啊, get input, 然后这边的话就返回什么呢? return, return 这两个,然后我们是需要传一个参数进来的啊,需要传一个 talkin 的 一个参数进来的,呃,所以我们这边的话也给个 talkin 吧, 给个 talkin 呢,然后再给个 video id 吧, 这个 video id 的 话就这个幺七二 啊,这个比特 id 的 话就是幺七二。然后这边的话我们也给它传个 id 啊,把,因为等下你要采集不同的视频的话,就改这个 id 就 可以了。 那获取它,获取它之后的话啊,我们这边的话要获取它的一个 m 三一八和它的一个 ok, 这里的话就获取什么呢?获取视频标题还有它的一个 m 三一八链接啊,这第二个函数方法啊,这个话就是一个主函数啊,主函数,那我们再写个函数入口,再写个函数入口啊,就可以了, 运行一下给大家看一下啊,那我们的一个标题和 m 三一八链接就出来了,也就相当于我们第二次请求啊,第二次请求所要做做的事情的话就搞定了啊,第二次请求的,第二次请求的话就搞定了 啊,那我们接下来的话就第三次请求嘛 啊?接下来的话就第三次请求。 get 什么呢? t s。 哇, get 我 们那个 t s 啊, get t s 的 话把这个链接传进去啊,然后获取我们的一个什么呢?视频内容 不对啊,这个话就是什么呢?获取 m 三一八的文件内容 request, 点 get, 点 text 啊,直接获取一下,我们把这个内容获取一下, 那它的内容就出来了,出来之后的话,这个的话要给大家提一嘴啊,它这个是有加密的啊,这个视频是加密的,看没有一个 a s 杠幺二八。 哇,这这个东西的话,我们在哪里呢?在这里啊啊,它这个就是我们的 m 三一八文件啊, 文件中短,你看到有个这个什么 aes 杠幺二八啊,幺二八,它的话这个视频内容是存在什么呢?存在一个加密的,就存在一个 aes 加密的,这有什么影响呢?就如果啊,如果说你不对于视频, 对于视频内容进行一个解密的话,就是你下载之后是不能播放的, 它是不能播放的,如果说你不解密的话,它是播不出来的啊,播不了的,不能播的啊,不能播的,懂了吗?啊?所以说我们得去逆啊,逆的话也很简单啊,主要是找它的一个什么呢?一个密钥,还有它的一个偏音量, 密钥的话就是哪个呢?密钥的话就这个 ui, 密钥链接就这个 ui, 然后它的偏音量的话就这个 i v 啊,就这个 i v, 这是个 i v。 那 所以我们在这边取数据的话,首先的话你得提取一个什么呢?提取它的一个密钥和片音量, 那我们来个 key 一 点,上一个方浪,先把这个给它取出来,取这个啊,把它取出来, 妙的话就它括号点心。问偏量的话,我们只要后面这一段就可以了,括号点心,这是它的内容,然后直接从哪里呢?从这个 m 三 u 八里面去匹配,取个令,好,这个话就它的偏音量啊,偏音量和它的一个妙, 然后我们再提取一下什么呢?提取一下 ts 的 链接地址啊, ts 的 链接地址的话,嗯,就是哪一段?就这一部分啊,就这一部分打中间这一款啊,这一款的话就是我们的链接地址,这个链接地址的话,我们也用正则去匹配一下 逗号杠 n, 括号点姓问杠 n, 减号键 m 三一八。 好吧,这个话就是我们基本的一个数据啊,那基本数据的话就拿到了啊,我点了个调试啊。 啊?为什么取后面的这个?因为零零 x 的 话是不要的,零 x 本来就不要的,因为它是十六禁制的, 懂了吗?因为因为它的一个解密的话是要的是十六禁制的啊,十六禁制的一个数据啊,那个零 x 的 话是不是的就超出位数了?十六位数的啊?十六位数的就是那个零 x 本来就是不要的,就你解密的话不要把那个零零 x 加上, 你加上的话它匹配不对的啊,匹配不到的就是你的位数可能不对啊,它到时候会报错的。 那然后啊,然后的话我们这边还要做一些基本的处理,虽然说我们现在是已经拿到了它的密钥链接了啊,虽然说已经拿到它的密钥链接,拿到它的片音量,已经拿到它的一个这个 t s 了啊,首先第一个的话就是我们要的是密钥的内容,不是它这个链接 啊,所以说我们要获取什么呢?获取他的密钥啊,密钥的话他是个二进制的啊,所以我们要对于这个链接去进行请求,对他的链接请求,然后获取他的一个二进制啊,获取他的这个二进制, 然后这个偏移量的话,也需要转成什么呢?转成一个字节啊,转成二进制的, 二进置的一个数据啊,要把这个也要给它转成二进置的啊,也要给它转二进置。 i v 等于一个 best 点上它 i v 啊,这个 id 的 话也要转换定制啊, ok, 然后还有一个点就在于什么呢?还有一个点就在于我们的这个 ts 链接,它不是完整的,它不是完整的,完整的 ts 链接长啥样?我们前面的话应该可以大家看得到的 呐。 对啊,这个是完整的链接地址, 我们有的只是后面这一部分啊,有的只是后面它少了前面这个域名对啊,少了前面域名,所以我们要给它做一个什么呢?做个啊,做个拼接,对吧?构建完整的一个 ts 链接,那我们就来个 ts 一 幺 list, 我们做个列表推导式啊,因为它前面这个域名是固定的话,那我们就做个列表推导式就行了。加 i for i in 我 们的一个 t s list 啊,做个列表推导式就行了,好吧。然后呢,就把这三个东西给它全部返回啊,把这三个东西都给它返回出去。 ok, 那 我们第三步的话就搞定了啊,第三步啊,第三步的话就搞定了, 或许他的链接还有他的密钥啊,还有他的配音量啊,就全部拿到了啊,就全部拿到了。好吧,这一部分的话还有没有问题想问的? 或许 m 三 u 八文件内容, 那就是分成了三部分啊,分成了三部分 啊,拿到之后的话啊,拿到这些东西之后的话,我们接下来的话就要去做保存了啊,就是第四次请求保存完整的视频内容。保存完整的视频内容的话,那我们也一样啊。呃,保存出去 d f c f, 呃,首先的话它的标题肯定是要的,标题肯定是要的,对不对?然后 ts 链接肯定也是要的啊,然后它的秘钥也是要的,它的 i v 肯定也是要的。然后还有它的一个解密的一个方法 dept 啊,我们要传这么多东西啊,因为我们只是拿到东西,我们还要构建什么呢?构建一个。呃,首先的话我们来获取一下啊,获取下视频内容 request 点 get e l 等于 t s e l 这个的话它是一个什么呢?它是个加密的视频内容 啊,加密的视频内容,我们需要对这个加密的内容去进行一个什么呢?去进行一个解密啊。呃,解密的话好像不用这个了,这里话好像不用传这个来,我们导入一下,导入一下 aes 的 一个模块方法, input aes, 构建一个解码器啊, de trapped, 嗯,或者来一个 es 吧, es 杠 de trapped 等于什么呢?等于我们的 es 点上一个六,把我们的 key 传进去,然后 model cbc 啊, ib 等于 ib, iv 等于 iv, 对 吧?等于 iv 的 话,我们是不是要给它进行一个传递?对,这个话就它啊,就它 t s u r 的 话,我们这里是一个链接啊,是个列表,我们构建一个循环, 负循环,宾利负 t s 又要它,然后呢?这样子 ok? 对 啊,这种的话我们解码器的话传进去,传进去之后的话我们进行一个什么解密啊?解密视频内容 dtrip, 点上 dtrip, 然后 t s content, 那 这个话就是解密后的内容啊,解密后的,解完密之后的话我们再进行一个数据保存 vs open video title 点 n p 四 a b s f 写入数据 f 点上一个什么 right, 好, 这样的话就可以了啊,这样的话就是对于我们这个视频进行一个保存,为了效果更好看的话啊,为了效果更好看,我们可以导入一个什么呢?进度条显示的一个模块, import 提格点, ok, 运行看一下效果 啊,没有文件啊,看到没有这个 video 文件夹,但我们这里是缺少一个文件的啊,是没有那个文件啊。呃,要么你就手动创建,要么就自动创建啊,那我们这里手动创建一下吧,缺少这个 video 文件夹啊,那我们来创建一下。 那这句话就开始进行采集了,它一共是五十九个片段啊,五十九个片段已经采集了百分之四十多了, 我们等他爬完啊,采集完的话我们来进行一个播放啊。哎,这个我给他关掉了嘛, 等他爬完。 ok, 爬完了我们来播放一下。 ok, 看到效果的同学扣个六啊。哎?他这个视频有字幕吗? 啊?他这视频有这么一共是九分四十四秒啊,九分四十四秒啊,四十七秒。 sorry, 我 看一下我们的是不是九分九分多钟啊?对啊,我们也是九分多钟,对,我们也是九分四十七秒,完全是一样的啊, 没问题吧?都非常清楚啊,那非常清楚,非常清楚啊, 给它放大一下。

大家好,我是 python 老八,每天五分钟带大家学习 python 爬虫入门啊。今天呢带大家学习如何抓取动态的数据啊,动态的数据,其实动态的数据呢,是比较容易抓的,在有一些情况下比较容易抓啊,那我们今天呢,以这个网站作为例子啊,这个网站作为例子, 把它 copy 下来啊。 好,这个网站,那这个网站呢有一块数据啊,那这个数据呢?是一个表格的数据啊,这个表格的数据,那这个数据呢?是动态啊,动态生成的是动态的,并不是直接。 嗯,跟着网页的原码一起返回到前端的啊,假如我们直接请求这个页面啊,呃,看它的原码,实际上是没有这个表格的啊,我们可以看一下啊, import request request, 点 get 好, 把这个链接给他,然后他会返回 r e s, 对 吧?好,然后呢我们打印一下他的 h t l 源码, 你看他的 h t l 源码里面是没有对应数据的啊,没有对应数据的啊,没有对应数据。 好,我们也可以把这个网页啊,按 f 十二啊,按 f 十二打开,然后呢刷新这个页面啊,看一下,你看这个就是网页的原码啊,我们打开,然后预览, 你看它是没有表格的啊,就是这一块数据,它是没有的,你看这个表是表格是空的啊,表格是空的,没有这个数据。那这个数据呢?是后面通过接口去请求到的啊,通过接口请求到的这个数据啊,这就是动态数据啊,动态数据啊,接下来呢,我们就演示一下啊,这个动态数据啊,怎么去抓啊? 你看这里也是有翻译的,对吧?你翻译的话,你点击一下,他就要去后台去找数据啊,点一下,哎,我们这个,呃,这个开发者工具啊,就可以把这个获取数据的请求给拦截到啊,我们点击一下,应该是这个,你看, 哎,这个就是接口的数据啊,这个就是接口的数据。 ok, 我 们把这个请求 copy 下来啊,复制啊,复制为 u r l。 好, 然后我们拿到这里来,把这个链接替换掉, 那这一串呢?嗯,是比较长的啊,这一串比较长,对吧?我们可以在浏览器里面直接打开这个链接看看啊。 哎,是可以直接打开的啊,然后这里面还有个这一串东西啊,这一串东西呢,我们可以在,呃,下载下来之后啊,把这个数据下载下来之后呢,直接手动啊,把它给去掉啊。好,然后我们直接在这里啊处理啊, delete 啊,等于 r e s 点 text 啊,然后我们 print 一下啊, 好,然后呢?我们要把这一串给去掉啊,这一串给去掉。那怎么去呢?你看这里是有个括号的啊,这有个括号,这个有点像函数啊,像函数,对吧?那我们可以按照括号去把它给。嗯,分割一下啊, 好,按照左括号去分割,然后我们保留右边这个部分,右边这个部分最后呢,它还有一个括号啊,还有个括号,然后我们继续按照括号去分割 啊,按右括号去分割,按右括号去分割的话,我们保留左边这个部分,保留左边这个部分,那就是零啊, 然后再运行一下, ok, 这样的话就得到了一个干净的 json 数据啊,干净的 json 数据。好,那得到这个干净的 json 数据啊, 我们用 json 叉啊去保存一下这个数值啊,然后接下来呢,我们会用到一个 json 库啊, 这个接生库呢?是派生自带的库啊,我们直接导入进来就可以使用了。然后呢,我们用接生库去 load 一下啊, load 这个接生数据啊, load 这个接生数据,然后呢?我们打印一下啊, 好,然后呢,我们 bug 调试一下, ok, 那 这个数据呢?实际上在哪里?现在 json 点 load 这个 json 之后呢?哎,把这个数据转换成了 json 里面的一个数据类型啊, json 里面数据类型,然后呢, 那数据呢?在这个 def 里面啊,你看数据在这个 def 里面啊,所以我们要去获取。怎么去获取呢?好, date 点 get, get。 啥 date 点 get date 啊? 好, date 点 get date 啊,然后 date 下面呢?我们又要 get def 啊, 这样的话就得到一个列表了啊,那这个列表呢?就是表格里面的数据啊, 所以我们真正要的数据是 date 点 get date 点 get diff。 好, 然后呢,那这个 date 啊,得到的结果呢?就是我们用 diff diff 去存这个 diff 数据啊。 好,我们调试一下,那这个地方呢,就是一个什么?就是一个列表啊,然后我们把这些数据啊保存到一个 csv 里面啊, 怎么去保存呢?可以这样啊,呃,我们可以使用一个 pandas 库啊, import pandas p d 啊,那这个 pandas 呢,也是三方的库啊,一个三方的库,所以我们在使用它之前呢,我们需要安装一下啊, pip install pandas, 通过 pip install pandas 去安装啊。 好,安装完了之后呢,我们就可以直接使用了啊,把它 p d, 点 delete print, 把这个数据啊 转给它,然后保存到一个 excel 里面啊,比如说 stock 点 excel s, 然后我们再 print 一下。啊,保存成功 再运行一下。耶,那这个还要安装另外一个货啊,叫 open p y x l。 那 这个呢?是处理 excel 的 啊?处理 excel 的, 我们一起安装啊,用这条命令啊,再来执行一下。 好,接下来呢,就可以正常执行了。好,保存成功了啊,然后我们把这个 excel 打开啊。 呃,怎么打开呢?我们回到这个项目目录啊,把这个文件打开,就这个啊, stock 点 excel。 好, 你看这个就是网页下载下来的一个数据啊,而且这个是动态数据,对吧?好,今天就分享到这里啊。

今天给大家带来一个使用 python 爬虫技术来抓取微博评论的一个案例,我们来看下这个程序。程序的话呢很简单,它这里是做了一个数据的一个清洗,然后做解析,做请求啊,大家来这样一个页面,这边我们先来确认一个事情,就是第一个你要抓什么数据,那我们来看一下,比如说我们以这个网址为例复制, 那这已经打开了,那就这个 ok, 是 这样的一条微博,那么当然如果你想抓其他的微博也可以啊,这个你自己选一下,比如我们随便选一个啊,随便选一个,比如这个 是吧?那么如果想获取网址,怎么获取呢?哎,比如点这里下拉,然后有一个什么,然后有一个复制微博地址, ok, 那 么这样子就可以了, 那就会出现这个网址了,那这个是关于他的一个网址的获取,拿到完之后,接下来我们做一个测试啊,看一下程序的运行,好吧,接下来呢点击运行,运行之后输入你要抓取的微博页面网址,那比如说我们就以这个为例看这些复制,然后呢看这个粘贴, ok, 那 它就会自动抓取这个页面中所对应的微博数据,并且呢将这个数据保存到我们的一个 c c 文件当中,好吧,那接下来看一下,在这里就会生成一个微博评论点 c c 来打开看一下,这里不够直观,我们在一个在 wps 打开,好吧,自动管理器来, 这样子的话呢,可能会更加直观一些啊,比如你看,首先是他的评论 id 啊,是一串数字,其次的话是发布的具体时间,然后就是用户的名称啊,然后就是用户的 id, 然后是评论的内容 啊,评论内容在这以及这里还要注意就是他的话呢,这里是分了层次,分层级的,你比如像这个,这是第一条评论,是吧?那么的话他下面有子评论啊, ok, 有 子评论分类的,所以的话呢,这个会有一个不同的差别。那么在这边你看我这是做了记录的,比如说用户的这个, 这两条都是叫小饭勺,对吧?但是他下面的话呢,会有什么?会有他的子评论, ok, 都会记录下来,所以如果你想通过弹幕的方式来获取 啊,你看像这个地方回复内容啊,喜欢这个小胖子,是吧?是不是?是哪一个评论啊?是这个地方的评论对不对?所以如果你想通过代码方式来批量采集微博的数据,那么就可以通过这程序来进行一个功能的实现。

同学们大家好,今天给大家带来一个 python 爬上技术来抓这个小书。首先第一个,今天任务目标我这里随便选,就以第一个为例,这个练个单,怎么就玩坏修行记啊?就这个好吧, 书名叫你的单,要不太正经,那么接下来任务要求就是抓这个里面的文字内容,好吧,非常简单,那接下来我们点击这里阅读,你可以看一下里面的具体数据。那确认好之后呢?来代码,在这 这里需要先说明一下啊,这个代码是需要在 python 的 环境才能运行的,这里面是具体代码。首先先从这个页面,从这个首页当中去请求 啊,从刚刚那个首页请求请求完之后,获取他对应的,比如说名称和章节,是吧?然后获取每一个章节具体数据,再进行具体的请求保存。最后保存的一个文件当中啊,一个记事本文件,这个就是记录我们的书名来进行保存。好,接下来我们试一下吧,来点击运行走, 那么他会按照章节一张一张的抓啊,就是第一张的第二张,第三张,来我们来看一下吧,打开燃气,那这里面具体的章节目录在这,是吧?第一张,第二张,嗯,第十张,中二并没的字,看一下是不是第十张,哎,没错,就这个 对吧。然后他会一直抓,直到抓完所有章节为止。那这个里面的话呢?他有啊,有四百多张是吧?那这个里面的话呢?我们就暂时先不抓了,终止, 你不强制终止,他会一直抓到抓完为止的,所以这边我们就暂时先不管了。来,接下来我们来验证一下数据到底对不对?首先找到我们保存的这个文件啊,在这,然后你往前翻。呃,他是从第一张开始的嘛?第一张说好的完美开局,网瘾大师姐是什么鬼,是吧?来,那我们来确认一下是不是呢? 那在这里是吧?没错了吧?章节名是对的啊,然后前面什么青云宗外事堂,今天是青云宗每月一度的这个修行资源发放日,是吧?那是对的吧。然后我们来看一下第一第一章最后一页, 这个师姐帮你试药是吧?你在练单?练什么单啊?在这没错吧? ok, 是, 对了,你或者再换其他章节试一下,比如说我们刚抓了,我随便选一个吧。 随便选一个,比如说我随便随手这么一拉,看一下这是哪一张?第十六张啊?冷月寒,十六张证, 对吧?啊,这个是没问题的,然后看这个什么行无涯,行无涯。对的,好,那么通过代码的方式你就能批量抓取你想要的小说。 ok, 这个很简单,好吧?进。