Python爬取bing图片
我之前写过一篇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图片相关推荐
- 使用Python爬取网页图片
使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给 ...
- 利用python爬取网页图片
学习python爬取网页图片的时候,可以通过这个工具去批量下载你想要的图片 开始正题: 我从尤物网去爬取我喜欢的女神的写真照,我们这里主要用到的就两个模块 re和urllib模块,有的时候可能会用到t ...
- python爬取美女图片的练习
python 爬取美女图片的练习 主要使用 xpath 定位获取 图片的链接 本次练习使用到os库 ,lmxl库 , requests库 import requests from lxml impor ...
- python爬取搜狗图片
python爬取搜狗图片 cond(`""" 对于动态加载的网站图片的获取,我们需要去分析js内容一定要让网页发生加载后去分析,分析network 里的XHR,可以看到需 ...
- Python爬取网站图片并保存,超级简单
Python爬取网站图片并保存,超级简单 先看看结果吧,去bilibili上拿到的图片=-= 第一步,导入模块 import requests from bs4 import BeautifulSou ...
- Python爬取网页图片至本地
Python爬取网页图片至本地 爬取网页上的图片至本地 参考代码如下: # -*- codeing = utf-8 -*- import requests import rephotos = [] h ...
- Python爬取网站图片数据
Python爬取网站图片数据 找到需要爬取的网站地址 模拟网站http请求 根据调试模式获取的了解读取到真实的地址url,读取请求头数据和参数信息,模拟http请求调用 import requests ...
- 如何使用python爬取百度图片_python实现爬取百度图片的方法示例
本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...
- Python爬取百度图片搜索结果
爬取百度图片搜索的图片,我们先需要分析其访问 URL,我们在搜索页面,比如搜索 "abc" ,打开 F12 调试,下拉结果页面页,查看网络请求,在其中我们可以找到这样一个请求 ht ...
最新文章
- php代码实现关键词搜索,PHP代码实现百度统计关键词及来路推送
- 浙大计算机 在职博士,浙江大学在职博士含金量高吗?
- 将Sql数据库中的表导出到指定文件
- 计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...
- IPv6与IPv4的区别
- java资源文件获取属性_Java读写资源文件类Properties
- unity android profile adt,Unity Android OBB
- gitlab上传本地项目_环境搭建:gitLab平台的搭建和简单使用
- 查询中接受的主体参数_【自动化/测开面试集锦系列】SQL查询
- C++ container member map
- api 微信小程序组件库colorui_微信小程序入门ColorUI组件库使用方法
- 常用9款在线作图工具,总有一款适合你!
- 声卡是HDA Intel,芯片为IDT 92HD81B1C5的ubuntu12.04下声音很小的解决方法
- 数据结构 图的邻接矩阵
- SAP License:SAP五大主流ERP一览
- 微信支付凭证关联开发票功能的配置
- Pycharm中,pyqt5.11.1的Qt assistant显示
- 如何搞好公司和员工的关系一:不要试图和下属做朋友
- 2020年工业用微型计算机,2008年10月自考工业用微型计算机真题及答案
- 【xshell7免费下载安装】