Python爬虫:获取必应图片的下载链接

文章目录

        • 1. 前言
        • 2. 实现思路
        • 3. 运行结果

1. 前言

首先,说明一下,本篇博客内容可能涉及到版权问题,为此,小编只说明一下实现思路,至于全部参考代码,小编不粘贴出来。不过,小编会说明详细一些,真心能够帮助到一些读者。仅供参考,请莫用于商业活动!
请添加图片描述

2. 实现思路

在必应上搜索图片,通过向下滚动滚动条,从而刷新出新的图片出来。
请添加图片描述
和百度图片效果一样,当时实现技术可能有一点不同吧!至于哪一点不同,只有读者自己实践才能知道。必应上搜索内容,至于改动这个参数即可,如下:

https://cn.bing.com/images/search?q=%E8%B5%9B%E5%B0%94%E5%8F%B7&first=1

也就是 q= 之后 &first 之前这部分字符串(进行了相关编码的结果)。直接在输入框中输入搜索内容,搜索栏里的链接会很长一段,但是只要上述那一段字符串链接就可以返回所搜索的结果了。
请添加图片描述
直接用requests模块访问这个链接,用lxml解析即可得到相关图片的下载链接,但是如果想下载多页数据,怎样得到下一页的数据呢?通过分析,可以发现在初始链接的html源码中,能够找到第二页链接接口,而访问第二页的链接接口,又可以找到第三页的链接接口,。。。
至于一共有多少页的数据,网站中好像没有提供总页数的数据。不过,像这种动态加载数据的,如果让我来实现相关的前端代码,根本没有必要把总页数据提供出来。请添加图片描述
请添加图片描述
不过,在实际实现过程中,却发现了一个问题,那就是下一页的接口链接找不到的情况,开始以为是应为网站用了反爬才导致的。最后发现用requests模块访问链接返回数据时,结果中有两种情况。一类情况就是能找到下一页接口链接的那种;还有一类情况就是出现了分页的情况,就是可以找到当前页的后几页的链接,不过没有尾页的链接,这种把用requests访问链接得到结果保存到一个html文件中,然后访问该html文件就可以发现,如下(搜索关键词改了的,这是有的情况下):
请添加图片描述
因此,小编觉得,如果要想代码在运行中不报错(能得到想要的结果数据),需要做两种情况处理,如果在当前页面html源码中能找到下一页链接数据,下一次访问这个链接即可;找不到下一页链接数据,那么就找那个多页分页的那些数据,看是否有下一页的数据。
同时需要注意的是解析html源码获取图片下载链接时,需要分两种情况,看看下述不同搜索词就可以找到原因了,如下:
请添加图片描述
请添加图片描述

3. 运行结果

Python爬虫:获取必应图片的下载链接

【注】:请求头上加上cookie,否则有一定的问题,另外,需要注意的是获取图片的下载链接方式。(小编使用两种方式,否则不一样的搜索词获取不到对应的下载链接。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/139276.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS 10.3软件安装包下载及安装教程!

【软件名称】:ArcGIS 10.3 【安装环境】:Windows 【下载链接 】: 链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A 提取码:oxbb 复制这段内容后打开百度网盘手机App,操作更方便哦 软件解压码点击原文…

【学习草稿】背包问题

一、01背包问题 图解详细解析 (转载) https://blog.csdn.net/qq_37767455/article/details/99086678 :Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物…

管道的读写特点和管道设置为非阻塞

管道的读写特点: 使用管道时,需要注意(默认阻塞I/O操作) 1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端读数据,那么管道中剩余的数据被读取以…

Postman应用——接口请求和响应(Get和Post请求)

文章目录 新增Request请求Get请求Post请求 Request请求响应Postman响应界面说明请求响应另存为示例(模板)Postman显示的响应数据清空请求响应数据保存到本地文件 这里只讲用的比较多的Get和Post请求方式,也可以遵循restful api接口规范&#…

acwing算法基础-chapter01-差分

差分介绍 结论:差分是前缀和的逆运算 举例 一维差分 //一维前缀和 a[i]部分就是一维差分数组 s[i] s[i-1]a[i]; //一维差分 a[i] s[i]-s[i-1];二维差分 //二维前缀和 a[i][j]部分就是一维差分数组 s[i][j] s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; //二维差分…

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测。…

北工大汇编——综合题(1)

题目要求 统计字符数。从键盘输入一行字符,统计字母、空格、数字、其他宇符的个数,并显示。要求:提示输入一行宇符串;键盘输入宇符串,Enter 键结束输入,并换行显示结果。 题目代码 DATAS SEGMENT;此处输…

提前放电避雷针防雷综合应用方案

放电避雷针是一种利用电离空气提前放电的避雷装置,可以有效地保护建筑物、设备和人员免受雷电的危害。放电避雷针有多种类型,根据其放电机理和结构特点,可以分为以下几类: 地凯科技预放电避雷针:这种避雷针利用雷云产…

图神经网络系列之消息传递

文章目录 1.前言2.消息传递机制1.RecGNN2.ConvGNNs3.GAT 1.前言 相比较于神经网络最基本的网络结构全连接层(MLP),特征矩阵乘以权重矩阵,图神经网络多了一个邻接矩阵。计算形式很简单,三个矩阵相乘再加上一个非线性变…

C++之类和函数权限访问总结(二百二十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

数据集笔记:T-drive 北京出租车轨迹数据

数据地址:T-Drive trajectory data sample - Microsoft Research 1 数据描述 此数据集包含了2008年2月2日至2月8日在北京期间10,357辆出租车的GPS轨迹。此数据集中的总点数约为1500万,轨迹的总距离达到了900万公里。图1显示了两个连续点之间的时间间隔和…

数据通信——传输层TCP(超时时间选择)

引言 TCP每一次发送报文段,就会对这个报文段设置一次计时器。如果时间到了却没有收到确认报文,那么就要重传该报文。 这个之前在TCP传输的机制中提到过,这个章节就来研究一下超时时间问题。 关于加权的概念 有必要提及一下加权的概念&#x…

typescrip接口 interface详解,以及ts实现多态

ts 接口 当一个对象类型被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的 示例如下 当一个对象类型被多次使用时,可以看到,很明显代码有大量的冗余 let personTom: { name: string, age?: number, sayHi(name: string): void } {name: Tom,sayHi(n…

软件的开发步骤,需求分析,开发环境搭建,接口文档 ---苍穹外卖1

目录 项目总览 开发准备 开发步骤 角色分工 软件环境 项目介绍 产品原型 技术选型 开发环境搭建 前端:默认已有 后端 使用Git版本控制 数据库环境搭建 前后端联调 ​登录功能完善 导入接口文档 使用swagger​ 和yapi的区别 常用注解 项目总览 开发准备 开发步骤…

【js】navigator.mediaDevices.getDisplayMedia实现屏幕共享:

文章目录 一、效果图:二、实现思路:三、实现代码: 一、效果图: 二、实现思路: 文档: 【MDN】https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/mediaDevices web技术分享| WebRTC 实现屏幕共享 面试官:纯前端如何实现录屏并保存视频到本地&a…

企业电子招投标采购系统源码之电子招投标的组成

功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供…

云计算行业人才缺口巨大,给自己一个超车涨薪的机会!

2023年了,云计算已经不是未来趋势,而是我们正处于的环境! 你一定用过云笔记、云盘吧?大家其实都在跟“云”打交道!我们如今所处的时代中,云计算无疑是当下最热门的技术。 各大中小企业都在纷纷是将自己的…

spring boot 时间格式化输出

目录标题 一、spring boot 序列化二、 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")和JSONField(format "yyyy-MM-dd HH:mm:ss")区别三、在实体类中序列化时间(格式化输出)(一)使用JsonFormat(二…

期权开户流程、交易时间和规则详解清晰易懂

本文将介绍期权开户流程、交易时间和规则详解清晰易懂则,包括期权的定义、期权交易的时间、期权交易的规则和期权交易的风险。本文的结论是,期权交易的时间和规则非常重要,应该遵守交易规则,并且要注意风险。本文来源:…

RS485以及MODBUS学习

学习目的: 1、什么是485? 2、485如何通信? 3、如何使用熟能生巧? RS485是一种四总线通信,分别是VCC、GND、485_A、485_B。两根负责通信,两根负责进行供电。 RS485通信 硬件层:解决的是数据传输问…