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

news/2024/7/19 10:48:52 标签: 爬虫

文章目录

        • 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.niftyadmin.cn/n/5027074.html

相关文章

redis 支持ipv6和ipv4设置方法

网上搜索一把 看网上的帖子说要支持ipv6和ipv4 并不绑定指定ip的方法设置是这样的 bind * -::*然而我用5.x版本window上试了一下 然并卵,并不行呀!!! 网上的用不上 就只能继续研究了 bind 0.0.0.0 这种写法貌似可以支持任意IP…

如何隐藏Selenium特征实现自动化网页采集

Selenium是一个流行的自动化网页测试工具,可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而,有些网站会检测浏览器是否由Selenium驱动,如果是,就会返回错误的结果或拒绝访问。为了避免这种情况,我们需要…

Redis 数据一致性方案的分析与研究

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 一般的业务场景都是读多写少的,当客户端的请求太多,对数据库的压力越来越大,引入缓存来降低数据库的压力是必然选择,目前业内…

Go语言实践案例之猜谜游戏| 青训营

目录 一、程序要实现效果: 二、思路分析: 三、具体代码 四、可能存在的疑问 一、程序要实现效果: 1.程序首先生成一个0-100的随机整数。 2.提示玩家进行猜测。 3.每次玩家需要输入一个数字,程序将会告诉玩家输入的数字与生…

通过篡改cred结构体实现提权利用

前言 在之前的HeapOverflow文章中,作者还构造了任意地址读写的操作,使用了任意地址读写去进行提权,还挺有意思的,记录一下如何利用任意地址读写进行提权。 作者利用任意地址读写分别改写modprobe_path以及cred结构体去实现提权的…

Open Interpreter,一个让ChatGPT入驻你的电脑并获得联网能力成为贾维斯!

Open Interpreter,一个让ChatGPT入驻你的电脑并获得联网能力成为贾维斯! 介绍安装使用 介绍 最近看了Github最近大火的程序员终端大升级,发现了open interpreter这个可以部署到本地命令行的对话AI,其依赖ChatGPT,可以…

什么是Jmeter?Jmeter使用的原理步骤是什么?

1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚…

vue2+openlayers6 项目实战示例详解【目录】

vue 和 openlayers是两个流行的前端即时,可以用于构建复杂的地图应用程序。本目录将介绍vue 和 openlayers的基本概念,以及如何在vue项目中使用openlayers进行地图展示和交互。 1. vue2 介绍 Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同…