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

2023-09-14 11:47:30

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,否则有一定的问题,另外,需要注意的是获取图片的下载链接方式。(小编使用两种方式,否则不一样的搜索词获取不到对应的下载链接。)

更多推荐

海外代理IP是什么?如何使用?

一、海外代理IP是什么?首先,代理服务器是在用户和互联网之间提供网关的系统或路由器。它是一个服务器,被称为“中介”,因为它位于最终用户和他们在线访问的网页之间。海外IP代理是就是指从海外地区获取的IP地址,用于将互联网连接路由通过位于不同国家或地区的服务器。这种代理服务允许用户隐藏其真实的地理位置,并获得访问其他国家或

Redis缓存与从数据取数据性能比较

Redis缓存与从数据取数据性能比较为什么使用Redis使用Redis缓存数据有多个原因,包括提高性能、降低数据库负载、减少响应时间和支持临时数据存储等。以下是一些主要原因以及Redis缓存的工作原理和好处:1.提高性能:数据库查询通常是一个相对较慢的操作,特别是当数据库中的数据量很大时。通过将常用的数据存储在Redi

定制EXP之RCE

文章目录1.常见模块介绍1.1base641.1.1base64编码1.1.2base64解码1.2string2.常规EXP编写2.1phpstudy_2016-2018_rce漏洞2.1.1漏洞利用脚本2.1.2进阶脚本2.1.3漏洞检测名词解释POC(ProofofConcept)漏洞验证代码,验证漏洞的存在性。

【ODPS新品发布第2期】实时数仓Hologres:推出计算组实例/支持JSON数据/向量计算+大模型等新能力

阿里云ODPS系列产品以MaxCompute、DataWorks、Hologres为核心,致力于解决用户多元化数据的计算需求问题,实现存储、调度、元数据管理上的一体化架构融合,支撑交通、金融、科研、等多场景数据的高效处理,是目前国内最早自研、应用最为广泛的一体化大数据平台。本期将重点介绍ꔷHologres推出计算组实例

计算机竞赛 深度学习OCR中文识别 - opencv python

文章目录0前言1课题背景2实现效果3文本区域检测网络-CTPN4文本识别网络-CRNN5最后0前言🔥优质竞赛项目系列,今天要分享的是🚩**基于深度学习OCR中文识别系统**该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分🧿更多

java 服务jvm参数据配置

JVM参数设置说明-Xms4g初始堆大小默认物理内存的1/64(<1GB)默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。初始和最大最好设置成一样,避免堆内存在应用运行过程中自动扩容而影响服务稳定性-Xmx4g最大堆大小默认物理内存的1/4(<1GB)

选择半导体老化测试方法

随着半导体使用的不断普及,老化成为一个主要问题。由于半导体的电气特性发生变化,老化可能会导致严重的故障。老化是指半导体器件由于连续使用或长时间暴露于各种环境条件(包括温度、湿度、辐射和电应力)而导致的电气特性的缓慢损失。半导体老化的影响包括:设备漏电流的增加会导致传输质量下降和能耗增加。阈值电压降低,影响器件的开关特性

<图像处理> Harris角点检测

Harris角点检测原理Harris角点检测是一种计算机视觉中常用的角点检测算法,用于在图像中检测出角点特征。角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。Harris角点检测算法是最常用且最基础的角点检测算法之一。Harris角点检测算法的原理是通过计算图像中每个像素点的响

spring security auth2.0实现

OAuth2.0的认证/授权流程jwt只是认证中的一步4中角色资源拥有者(resourceowner)、客户端(client第三方)、授权服务器(authorizationserver)和资源服务器(resourceserver)。AuthorizationCode(授权码模式):OAuth2的授权模式,客户端先将用户

【STM32学习】I2C通信协议 | OLED屏

🐱作者:一只大喵咪1201🐱专栏:《STM32学习》🔥格言:你只管努力,剩下的交给时间!今天需要将代码烧录到开发板中,本喵默认大家都会创建工程,以及进行基本的外设配置。I2C通信协议|OLED屏😽I2C协议🙈数据格式🙈I2C信号时序🙈I2C驱动代码😽OLED显示🙈SSD1306🙈SSD1306的I2

Vue的插值、指令、过滤器、计算属性及监听属性,包涵所有基础技术

目录一、插值1.1讲述1.2实例二、指令2.1概述2.2案例三、过滤器3.1讲述3.2实例四、计算属性&监听属性(1)计算属性(2)监听属性(3)购物车案例带给我们的收获一、插值1.1讲述Vue的插值是一种将数据动态绑定到HTML模板中的方式。通过插值,可以将Vue实例中的数据直接显示在HTML模板中,实现数据与视图的

热文推荐