我之前写过一篇Python爬取百度图片,有兴趣的朋友可以去读一下,这次写的是爬取Bing的图片。

打开Bing图片,搜索关键词,开始分析页面,可以发现bing和百度一样都是下滑自动加载,百度默认一次加载30张,bing默认一次加载35张。

count是加载图片数,first是从第几张图片开始加载,直接连续请求解析网页就可以了

之前百度类似的代码也发过了,我们来说另一种方法,我们发现请求图片的时候是get请求,参数都在url里,我们可以尝试改变url来获取网页。在地址栏填入下面的网址:https://cn.bing.com/images/async?q=%E7%BE%8E%E5%A5%B3&first=0&count=35&relp=35&lostate=r&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0

可以看到网页只加载了35张图片,图片的数量还是由count控制,我们可以每次请求35张,下载35张,也可以根据自己的喜好改变。查看一下网页结构,找到每张图片的位置:

很好找,按照我们的思路先写一个保存图片的方法:

#从得到的图片链接下载图片,并保存
def SaveImage(link,InputData,count):try:time.sleep(0.2)urllib.request.urlretrieve(link,'./'+InputData+'/'+str(count)+'.jpg')except Exception :time.sleep(1)print("产生未知错误,放弃保存")else:print("图+1,已有" + str(count) + "张图")

加上错误处理是因为有些图片可能会因为各种各样的原因下载失败,防止遇到错误程序断掉,我们又不缺那一两张图片对吧。

time.sleep()是为了别让程序请求速度太快,防止被封ip

这里用到了urllib.request.urlretrieve,这个方法可以直接把网络上的图片存到指定的文件中,就不用先请求数据,再打开文件写入,关闭文件这么啰嗦的写法了

它一共有四个参数urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据)

reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。

data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。

然后再写获取链接的方法:

#找到图片的链接
def FindLink(PageNum,InputData,word):for i in range(PageNum):print(i)try:url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0'#定义请求头agent = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.165063 Safari/537.36 AppEngine-Google."}page1 = urllib.request.Request(url.format(InputData, i*35+1), headers=agent)page = urllib.request.urlopen(page1)使用beautifulSoup进行解析网页soup = BeautifulSoup(page.read(), 'html.parser')#创建文件夹if not os.path.exists("./" + word):os.mkdir('./' + word)for StepOne in soup.select('.mimg'):link=StepOne.attrs['src']count = len(os.listdir('./' + word)) + 1SaveImage(link,word,count)except:print('URL OPENING ERROR !')

在请求时可以加上请求头模仿浏览器请求,也是为了被封ip。其它的也没什么说的,看代码都懂

最后整合:

if __name__=='__main__':#输入需要加载的页数,每页35幅图像PageNum = 100#输入需要搜索的关键字word='美女'#UTF-8编码InputData=urllib.parse.quote(word)print(InputData)FindLink(PageNum,InputData,word)

Python爬取bing图片相关推荐

  1. 使用Python爬取网页图片

    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给 ...

  2. 利用python爬取网页图片

    学习python爬取网页图片的时候,可以通过这个工具去批量下载你想要的图片 开始正题: 我从尤物网去爬取我喜欢的女神的写真照,我们这里主要用到的就两个模块 re和urllib模块,有的时候可能会用到t ...

  3. python爬取美女图片的练习

    python 爬取美女图片的练习 主要使用 xpath 定位获取 图片的链接 本次练习使用到os库 ,lmxl库 , requests库 import requests from lxml impor ...

  4. python爬取搜狗图片

    python爬取搜狗图片 cond(`""" 对于动态加载的网站图片的获取,我们需要去分析js内容一定要让网页发生加载后去分析,分析network 里的XHR,可以看到需 ...

  5. Python爬取网站图片并保存,超级简单

    Python爬取网站图片并保存,超级简单 先看看结果吧,去bilibili上拿到的图片=-= 第一步,导入模块 import requests from bs4 import BeautifulSou ...

  6. Python爬取网页图片至本地

    Python爬取网页图片至本地 爬取网页上的图片至本地 参考代码如下: # -*- codeing = utf-8 -*- import requests import rephotos = [] h ...

  7. Python爬取网站图片数据

    Python爬取网站图片数据 找到需要爬取的网站地址 模拟网站http请求 根据调试模式获取的了解读取到真实的地址url,读取请求头数据和参数信息,模拟http请求调用 import requests ...

  8. 如何使用python爬取百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  9. Python爬取百度图片搜索结果

    爬取百度图片搜索的图片,我们先需要分析其访问 URL,我们在搜索页面,比如搜索 "abc" ,打开 F12 调试,下拉结果页面页,查看网络请求,在其中我们可以找到这样一个请求 ht ...

最新文章

  1. php代码实现关键词搜索,PHP代码实现百度统计关键词及来路推送
  2. 浙大计算机 在职博士,浙江大学在职博士含金量高吗?
  3. 将Sql数据库中的表导出到指定文件
  4. 计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...
  5. IPv6与IPv4的区别
  6. java资源文件获取属性_Java读写资源文件类Properties
  7. unity android profile adt,Unity Android OBB
  8. gitlab上传本地项目_环境搭建:gitLab平台的搭建和简单使用
  9. 查询中接受的主体参数_【自动化/测开面试集锦系列】SQL查询
  10. C++ container member map
  11. api 微信小程序组件库colorui_微信小程序入门ColorUI组件库使用方法
  12. 常用9款在线作图工具,总有一款适合你!
  13. 声卡是HDA Intel,芯片为IDT 92HD81B1C5的ubuntu12.04下声音很小的解决方法
  14. 数据结构 图的邻接矩阵
  15. SAP License:SAP五大主流ERP一览
  16. 微信支付凭证关联开发票功能的配置
  17. Pycharm中,pyqt5.11.1的Qt assistant显示
  18. 如何搞好公司和员工的关系一:不要试图和下属做朋友
  19. 2020年工业用微型计算机,2008年10月自考工业用微型计算机真题及答案
  20. 【xshell7免费下载安装】

热门文章

  1. mysql查询未讲课教师_mysql练习
  2. Word2003入门动画教程69:怎么压缩Word中的图片
  3. Android简单的ViewPager指示器
  4. iphone小小总结
  5. 塔防游戏制作教程(四)
  6. 滴滴外卖开启连锁模式,距离全国连锁还有多远?
  7. Komodo调试perl
  8. Oruxmaps离线地图-最新制作教程(支持谷歌地图、卫星地图、地形图、百度地图、高德地图)
  9. UWB+北斗融合定位终端WIFI传输模式配置方法
  10. Sprite Kit 精灵系统