Ajax虫术の小姐姐快到碗里来

aj545302905   ·   发表于 25天前   ·   技术文章投稿区

Hello 我的盆友们 你们最菜的小箭箭又来写文章啦,前几天连下了几场大雨,但此时看着这雨后的晴天,我的雅兴油然而生,那就写个爬虫欣赏下漂亮的小姐姐吧

当然,本章Ajax爬虫的功能可不止这一点,只要稍加修改就会…… 所以 你懂的……

目前来讲,我觉得会写Ajax爬虫,无论是从事安全还是开发行业也好,这是一项必不可少的基本技能。

可是有不少不懂代码的小白又要头疼了。”Ajax是啥?”,”这个看不懂啊?”,”我连爬虫是啥都不知道!”…… 基于上面种种问题,我来写一篇 倾向于小白的有关如何生成Ajax爬虫脚本的文章。

如果看完本篇文章后各位看官说你看不懂,欢迎你来砍我! (听好了,我就在北方大区 新手营 频道……咳咳 言归正传)

先简单的来解释一下什么是Ajax吧

  • Ajax并不是一门编程语言(不用害怕)
  • 它是一门技术,利用JS 保证在页面不被刷新不改变页面链接的情况下与服务器进行数据交换 来更新网页元素中的源代码 实现数据的更新。

我们身边就有很多类似的实例:

我们在浏览QQ空间的时候,是不是要不断向下滑动才能出现更多的内容呢?

向下滑动的时候是不是会出现”加载中……”类似的字样提示呢?

以上种种现象都是Ajax的请求。

Ajax的工作原理包含以下三点:

  • 发送请求:建立对象->开始监听->向服务器发送请求->得到响应

  • 解析内容:利用xmlhttp的responseText属性取得响应内容通过JS进行解析

  • 渲染网页:再利用JS对上一步解析的内容进行进行下一步处理,然后对元素内的某的源代码进行更新。

OK 现在我们对Ajax的原理有了大概的了解,那么我们该考虑如何构造Ajax爬虫了。

  • 构建Ajax爬虫需要找到请求url中的规律(这很简单,向下滑动页面,XHR中就会出现更多Ajax的请求,我们只需要从中找不同就可以了)

  • ————XHR———这是一个筛选器,可以筛选出所有的Ajax请求,稍后会讲到

  • 检查字段,从响应中(Preview)检查字段内容,找到我们图片所藏匿的未知

  • 开整

一.我们先来确认一下 我们想要的内容是否是在Ajax请求中:

来到今日头条的页面,搜索”街拍”,然后按下F12->NetWork->找到当前网页的源码->Ctrl+F 搜索(”任意一个标题”)如图:

既然我们在当前页面源码中没有找到图片的地址,那么我们是不是可以去Ajax请求中去找一下呢?

(如果按F12打开NetWork没有内容的话 记得刷新一下哦)

这样就很奈斯,我们想要的内容就在Ajax请求中,所以我们可以继续向下检查字段的内容,然后构造脚本了o( ̄▽ ̄)ブ

  • 看一下这个请求里面有什么字段:”data字段”中有一串列表,随便点开一个列表发现其中有一个名为”image_list”和”title”的字段

  • 点开image_list字段后,小姐姐的照片地址映入眼帘。这就是我们要大量爬取的目标

找到目标了,接下来的一步就是找到请求URL中的规律。

我们直接从XHR中查看所有Ajax请求的URL地址,发现当中offset请求条件以每次加20的递增

但是后面还有一大堆乱七八糟的字符串,看不懂啊肿么办?教大家一个残暴的方法——直接删掉就好了,并不影响页面回显给我们的内容。

这里我们只讲URL请求保留到这么长就可以了。
Request URL: https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=40&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis
然后通过改变当中的offset查询条件即可

晓得了URL中的规律,下一步就是本篇文章的重头戏了!——构造Ajax爬虫脚本

为了视觉美观,代码这里我还是用图片展现出来吧。文章末尾我会奉上本章全部源码的

一.构造请求函数:

二.保存美图url地址:

我们爬到结果后当然要把图片保存下来啦~

file_path = ‘{0}{1}.{2}’.format(title_path + ‘/‘, md5(img_resp.content).hexdigest(), ‘jpg’)

这里md5().hexdigest()为的是让生成的图片不出现重名,直接套用即可。

现在我们将请求函数 和 保存函数 都构造完成,那么我们最后构造一个main()函数来执行前面的两个函数

  • 之前我们找到offset的规律是每次Ajax请求都会成20的递增,那么我们就来构造一个成20递增的FOR循环
  • i 的结果就是0,20,40,60,80,100 (注意120不会遍历其中)
  • 接下来每次发送请求 offset值都会增加20,直到最后一次请求offset的值为100为止
    依次执行 getonepage()和saveimg()这里就不用过多解释了
    最后一个函数_name
    ==’__main()
    ‘ 看过我之前文章的应该都晓得吧

最后我们执行以下 看看有没有漂亮的小姐姐到我们的电脑上来!(☆▽☆)

F5走一波(这里用的Python3执行)

但是把,执行到最后给我报了一个错!一报错就终止爬取小姐姐的照片了。

看一下报错结果应该是路径问题,无伤大雅的小报错,但却终止了我们的脚本,所以这里就卖一个小关子,怎么解决这个问题呢就交给你们喽,当然我会把修改后的结果放到附件里。

以上就是Ajax爬虫的全部内容啦,更多爬虫技巧会在后面慢慢教给大家哦 谢谢大家观看 觉得不错就点个赞吧 源码在下方哦~

完结撒花★,°:.☆( ̄▽ ̄)/$:.°★

用户名金币积分时间理由
奖励系统 100.00 0 2020-08-08 16:04:08 投稿满 10 赞奖励
奖励系统 50.00 0 2020-08-02 11:11:34 投稿满 5 赞奖励
Track-聂风 70.00 0 2020-07-21 16:04:15 期待你的爬虫文章

打赏我,让我更有动力~

9 Reply   |  Until 6天前 | 1586 View

lky123456
发表于 24天前

牛掰

评论列表

  • 加载数据中...

编写评论内容

erick
发表于 23天前

1

评论列表

  • 加载数据中...

编写评论内容

zhangjialu
发表于 22天前

爬爬

评论列表

  • 加载数据中...

编写评论内容

冷星魂
发表于 17天前

tql,爬虫我都没学过

评论列表

  • 加载数据中...

编写评论内容

cookie
发表于 13天前

666

评论列表

  • 加载数据中...

编写评论内容

pagliacci
发表于 10天前

把美女图给我交了OvO

评论列表

  • 加载数据中...

编写评论内容

白鸽
发表于 10天前

1

评论列表

  • 加载数据中...

编写评论内容

15858289372
发表于 6天前

1

评论列表

  • 加载数据中...

编写评论内容

寒尘
发表于 6天前

11

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部

掌控者 © 2016. All Rights Reserved. 掌控者

Powered by 掌控者 Version 2.1.3