Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ajax爬取街拍美女

Ajax爬取街拍美女

作者头像
stormwen
修改于 2019-10-24 11:32:36
修改于 2019-10-24 11:32:36
7530
举报
文章被收录于专栏:公众号:googpy公众号:googpy

阅读文本大概需要5分钟。

随着今日头条内部代码的不断升级改版,现在网上一些爬取今日头条街拍美图的代码显然不能适用,我利用周末的时间研究了一下如何用Ajax爬取今日头条街拍美图,今天就和大家分享一下这个项目。

背 景

有时候当我们用requests抓取页面时,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用requests得到的结果并没有。

这是因为requests获取的都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据后生成的结果,这些数据的来源有多种,可能是通过Ajax加载的,可能是包含在HTML文档中的,也可能是经过JavaScript和特定算法计算后生成的。

因此,如果遇到这样的页面,我们再用requests等库是无法获取得到有效数据的,这时需要分析网页后台接口发送的Ajax请求,如果可以用requests来模拟Ajax请求,那么就可以成功抓取了。

1.什么是Ajax

Ajax,全称为Asynchronous JavaScriptand XML,即异步的JavaScript和XML。它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。

下面就让我们用一个实例来学习一下Ajax在数据爬取中的应用吧。

2.分析Ajax爬取今日头条街拍美图

(1)目标

这次要抓取的目标是今日头条的街拍美图,抓取完成后,将每组图片分文件夹下载到本地并保存下来。

(2)准备工作

在本项目开始之前,请确保已经安装好requests库,如果没有安装,可以用pip命令安装。

(3)抓取分析

打开今日头条的首页http://www.toutiao.com/,页面右上角有一个搜索入口,在这里输入“街拍”进行搜索,如下图所示;

打开开发者工具(F12),查看所有的网络请求。因为Ajax其实有其特殊的请求类型,它叫做xhr。在下图中,我们可以发现一个请求,其Type为xhr,这就是一个Ajax请求,用鼠标点击这个请求,就可以查看这个请求的详细信息。

然后点击右侧的Preview中的data字段展开,发现这里有许多条数据,点击第一条展开,可以发现一个title字段,它的值正好就是页面中第一条数据的标题。再检查一下其他数据,也是一一对应的,如下图所示。

data字段中的每条数据还有一个image_detail字段,它是列表形式,这其中就包含了组图的所有图片列表,我们只需要将列表中的url字段提取出来并下载下来就好了。每一组图都建立一个文件夹,文件夹的名称就为组图的标题。

(4)分析请求

切换到Headers选项卡,观察一下它的请求URL和Headers信息,如图所示。

可以看到,这是一个GET请求,请求URL的参数有offest、format、keyword、autoload、count和cur_tab。我们需要找出这些参数的规律,因为这样才可以方便地用程序构造出来。

这里观察一下后续链接的参数,发现变化的参数只有offset,其他参数都没有变化,而且第二次请求的offset值为20,第三次为40,第四次为60,所以可以发现规律,这个offset值就是偏移量,进而可以推断出count参数就是一次性获取的数据条数。因此,我们可以用offset参数来控制数据分页

(5)代码实现

首先,定义方法get_page()来加载单个Ajax请求的结果。其中唯一变化的参数就是offset,所以我们将它当作参数传递,代码如下:

然后,在定义一个解析方法:提取每条数据的image_detail字段中的每一张图片链接,将图片链接和图片所属的标题一并返回,此时可以构造一个生成器,代码如下:

接着,定义一个方法保存图片。该方法中,要根据item的title来创建文件夹,然后请求这个图片的链接,获取图片的二进制数据,以二进制的形式写入文件。代码如下:

最后,只需要构造一个offset数组,遍历offset,提取图片链接,并将其下载即可,代码如下:

(6)结果展示

整个程序运行之后,可以发现街拍美图都分文件夹保存了下来,如图所示。

3.总 结

通过这个项目,我们可以了解Ajax分析的流程、Ajax分页的模拟以及图片的下载过程。按照web发展趋势来看,网页的原始HTML文档不会包含任何数据,数据都是通过Ajax统一加载而后再呈现出来的,所以我们需要熟练掌握Ajax数据爬取。后台回复「街拍」便可以获得项目的源码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 googpy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分析Ajax爬取今日头条街拍美图
本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法。这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来。 1. 准备工作 在本节开始之前
崔庆才
2018/06/25
6730
Python | 分析 Ajax 爬取今日头条街拍美图
这次实战采取的是 wi10 + python3.6 + PyCharm 的开发环境。另外,还用到了 requests 、urllib、hashlib、multiprocessing 这几个库。其中,requests 用于网络请求;urllib 的 urlencode 模块用于构造请求参数;hashlib 的 md5 模块用于构建一个唯一的图片名,防止重复,造成出错;multiprocessing 的 pool 模块用于开启多线程,加快爬取速度。
JavaFish
2019/10/17
6890
Ajax爬取今日头条街拍美图
Ajax,全称为Asynchronous Javascript And XML,即异步的JavaScript and XML。它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。常见的比如QQ空间动态中的下滑查看更多的选项。
小F
2020/10/09
4120
Ajax爬取今日头条街拍美图
Python爬取今日头条的街拍美图,源码分享啦!
最近一直在研究Python爬虫的相关知识,不为别的,只为程序猿的世界都是为了搞事情,这次大家分享如何爬取今日头条的街拍美图。
程序猿的栖息地
2022/04/29
7010
Python爬虫之四:今日头条街拍美图
运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器
王强
2018/08/09
8470
Python爬虫之四:今日头条街拍美图
今日头条街拍图片抓取
分析网页之后发现是Ajax技术(我用的是Chrom的开发者工具,点XHR之后发现了常规的Ajax请求)
松鼠先生
2022/02/22
5480
今日头条街拍图片抓取
Python 小爬虫 - 爬取今日头条街拍美女图
先实际感受一下我们要抓取的福利是什么?点击 今日头条,在搜索栏输入街拍 两个字,点开任意一篇文章,里面的图片即是我们要抓取的内容。 可以看到搜索结果默认返回了 20 篇文章,当页面滚动到底部时头条通过
追梦人物
2018/04/11
1.5K0
Python 小爬虫 - 爬取今日头条街拍美女图
开车啦!小爬虫抓取今日头条街拍美女图
專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统。Django开源论坛作者(项目地址:h
Python中文社区
2018/01/31
1.8K0
开车啦!小爬虫抓取今日头条街拍美女图
爬虫进阶(一)
总第65篇 往期相关推送: 零基础学习爬虫并实战 房天下数据爬取及简单数据分析 01|背景介绍: 前两篇推文里面涉及的目标爬取对象都比较简单,要么是普通的静态网页图片,要么是有规律的url参数,通过遍历参数就可以爬取不同的页面内容。还有一种目标爬取对象不属于上面任何一种。 我们要爬取每个图集里面的每张图片,就是下图这样子。 我们先想一下如果是人为的去保存每个图集里面的每张照片,我们会怎么做? 应该是先找到图集的合集,然后点进去每个图集,再然后对该图集里面的每张图片点击保存到本地,依次对每一个
张俊红
2018/04/11
1K0
爬虫进阶(一)
python爬虫---实现项目(二) 分析Ajax请求抓取数据
这次我们来继续深入爬虫数据,有些网页通过请求的html代码不能直接拿到数据,我们所需的数据是通过ajax渲染到页面上去的,这次我们来看看如何分析ajax
小菜的不能再菜
2019/09/18
7930
python爬虫---实现项目(二) 分析Ajax请求抓取数据
冒死偷发python爬虫班的vip课程,爬取头条小姐姐街拍图片
内容:爬取今日头条街拍图片 环境: Python2+Windows 模块:bs4,json,requests,os,sys 1. 数据采集,爬虫知识 2. 熟练运用Python基础 3. 掌握提取
云飞
2018/09/13
9400
女生勿扰,只适合男孩子的 Python 爬虫,里面东西不给钱统统白送
说真的,花了几天的时间来搞一个别人已经干过的项目,不知道是不是不值得,但是后面我自己上手做了之后,我才发现,这必须值得,崔大的书是2018年的,而现在网络的更新速度太快了,书本上的接口知识点都变了,废了老多时间才弄懂这些,不过我觉得也值,所以把代码加强了一下,实现了我的功能,下面做个简单的分享。
Python小二
2020/09/27
7550
女生勿扰,只适合男孩子的 Python 爬虫,里面东西不给钱统统白送
智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
随着Web技术不断发展,越来越多网站采用了AJAX、动态渲染等技术来加载数据。以今日头条(https://www.toutiao.com)为例,用户打开网页时并不会一次性加载所有信息,而是通过JavaScript触发异步请求分批加载新闻数据。
jackcode
2025/05/28
880
智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!
一、介绍 朋友暑假实践需要美团外卖APP评论这一份数据,一开始我想,这不就抓取网页源代码再从中提取数据就可以了吗,结果发现事实并非如此,情况和之前崔大讲过的分析Ajax来抓取今日头条街拍美图类似,都是
小小科
2018/05/02
1.1K0
中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!
【Python爬虫实战】——爬取今日头条美女图片
笔者是头条的深度使用者,经常用头条完成“看片”大业。若不信的话可以试试在头条搜索街拍,返回的都是一道道靓丽的风景线。 想把图片存下来,该怎么办呢?我们可以用Python爬虫啊。 人生苦短,我用Pyth
小歪
2018/04/04
3.8K0
【Python爬虫实战】——爬取今日头条美女图片
Python爬虫爬取Instagram博主照片视频
前言 Instagram上有很多非常好看的照片,而且照片类型非常全,照片质量也很高。 但是有个问题,不管是在移动端还是在网页端都不能通过长按或者右键方式进行图片保存。 看了下知乎问题 怎
林清猫耳
2018/08/31
5.1K1
Python爬虫爬取Instagram博主照片视频
Python爬虫基础(一)——HTTP
  因特网联系的是世界各地的计算机(通过电缆),万维网联系的是网上的各种各样资源(通过超文本链接),如静态的HTML文件,动态的软件程序······。由于万维网的存在,处于因特网中的每台计算机可以很方便地进行消息交流、文件资源交流······。基于因特网的帮助,我们可以在web客户端(如浏览器等)通过HTTP访问或者下载web服务端(如网站服务器)上面的web资源。
py3study
2020/01/20
8420
python 简单爬取今日头条热点新闻(
今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的;
py3study
2020/01/17
6.9K3
谈谈如何抓取ajax动态网站
什么是ajax呢,简单来说,就是加载一个网页完毕之后,有些信息你你还是看不到,需要你点击某个按钮才能看到数据,或者有些网页是有很多页数据的,而你在点击下一页的时候,网页的url地址没有变化,但是内容变了,这些都可以说是ajax。如果还听不懂,我给你看看百度百科的解释吧,下面就是。
sergiojune
2018/07/25
1.9K0
谈谈如何抓取ajax动态网站
解锁unlist在网页爬取中的另类用法
在大数据时代,网络爬虫技术是获取海量数据的关键工具。然而,随着网站反爬措施的加强,爬虫开发者需要探索新的方法和工具,以确保高效、安全的数据抓取。今日头条作为国内知名的新闻聚合平台,以其多样化的内容和即时的新闻更新,成为数据分析和挖掘的重要来源。头条新闻覆盖了热点时事、社会动态、科技发展等多个领域,为用户提供了全面的信息服务。在这篇文章中,我们将聚焦于一种另类的技术手段——unlist的使用,并结合代理IP和多线程技术,在采集今日头条新闻热点时,实现高效的数据抓取。
jackcode
2024/12/31
1730
解锁unlist在网页爬取中的另类用法
推荐阅读
相关推荐
分析Ajax爬取今日头条街拍美图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档