分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

分析Ajax请求并抓取今日头条街拍美图

发布时间:2023-09-06 01:50责任编辑:赖小花关键词:Ajax

准备工作

requests、Beautiful Soup、MongoDB

抓取分析

在抓取之前首先分析抓取的逻辑,打开今日头条的首页https://www.toutiao.com/如图

右上角有一个搜索入口,这里尝试抓取街拍美图,所有输入“街拍”二字,搜索一下,结果如下图所示:

这时打开发者工具,查看所有网络请求,首先打开第一个网络请求,这个请求的URL就是当前的链接:https://www.toutiao.com/search/?keyword=街拍,

刷新一下界面,查看响应结果,如下没有找到页面上的内容

切换到XHR查看,找到了我们需要的信息

article_url就是内容详细的链接

再看一下Headers,这是我们需要构造的请求参数

进入内容详细页查看响应信息,找到了每个图片链接的页面是在Doc:

实战演练

刚才分析了Ajax请求的逻辑,下面就用程序来实现美图下载吧。

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

import requestsfrom urllib.parse import urlencodedef get_page(offset): ???params = { ???????‘offset‘: offset, ???????‘format‘: ‘json‘, ???????‘keyword‘: ‘街拍‘, ???????‘autoload‘: ‘true‘, ???????‘count‘: ‘20‘, ???????‘cur_tab‘: ‘1‘ ???} ???url = ‘https://www.toutiao.com/search_content/?‘ + urlencode(params) ???try: ???????response = requests.get(url) ???????if response.status_code == 200: ???????????return response.json() ???except requests.ConnectionError: ???????return None

这里我们用urlencode()方法构造请求的GRT参数,然后用requests请求这个链接,如果返回状态码为200,则调用response的json()方法将结果转为JSON格式,然后返回。

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

分析Ajax请求并抓取今日头条街拍美图

原文地址:https://www.cnblogs.com/0bug/p/8907262.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved