首页后端开发JAVA如何爬取百度图片的内容

如何爬取百度图片的内容

时间2023-07-25 11:39:07发布访客分类JAVA浏览468
导读:如何爬取百度图片的内容?这和缓存没有什么关系,百度图片的信息是动态加载的,在一个json文件中,需要抓包分析,解析这个文件才能提取到图片的url进行下载,下面我大概介绍一下如何抓取百度图片url信息并进行下载,实验环境win7+python...

如何爬取百度图片的内容?

这和缓存没有什么关系,百度图片的信息是动态加载的,在一个json文件中,需要抓包分析,解析这个文件才能提取到图片的url进行下载,下面我大概介绍一下如何抓取百度图片url信息并进行下载,实验环境win7+python3.6+pycharm,就是两个函数,很简单,先贴源码吧,如下:

import requests

import json

import time

def getImageInfo():

'''获取图片url信息'''

image_urls=[] # 存储图片url信息

url='http://image.baidu.com/search/acjson?tn=resultjson_com& ipn=rj& word=风景图片大全& pn=60& rn=30'

response=requests.get(url=url) # 请求json文件

response.encoding='utf-8' # 设置编码

data=json.loads(response.text).get('data') # 加载json文件

for item in data: # 获取图片下载url信息

if item.get('replaceUrl') and len(item.get('replaceUrl'))> 1:

image_url=item.get('replaceUrl')[1].get('ObjURL') # 得到下载url

image_urls.append(image_url) # 插入image_urls中

return image_urls

def downloadImage():

'''下载图片'''

image_urls=getImageInfo() # 获取图片url信息

for i in range(len(image_urls)):

try:

# 成功下载

content=requests.get(image_urls[i]).content # 获取图片(二进制信息)

image_file=open(r'F:\picture\baidu\%d.jpg' % (i+1),'wb') #创建jpg文件

image_file.write(content) #写入文件

image_file.close() #关闭文件

print('第%d张图片下载成功:%s' % (i+1,image_urls[i])) # 打印下载信息

time.sleep(1) # 暂停1秒,防止被识别

except Exception as e:

# 失败下载

print('第%d张图片下载失败: %s' % (i+1, image_urls[i])) # 打印下载信息

print(e) # 打印异常信息

continue

if __name__=="__main__":

'''主函数'''

downloadImage()

下面介绍一下主要步骤:

1.抓包分析页面。按F12调出开发者工具,刷新页面,依次点击"Network","XHR",和"Preview",就可看到动态加载的图片信息,我这里以爬取百度图片“风景图片大全为例”,网址为http://image.baidu.com/search/index?tn=baiduimage& ipn=r& ct=201326592& cl=2& lm=-1& st=-1& fm=result& fr=& sf=1& fmq=1522202517144_R& pv=& ic=0& nc=1& z=& se=1& showtab=0& fb=0& width=& height=& face=0& istype=2& ie=utf-8& hs=2& word=风景图片大全& f=3& oq=风景图片大全& rsp=0,如下:

json文件的信息我们可以在开发者工具中看到,以下是json中的图片信息,我们需要对这些数据进行提取:

对应的json文件url信息可以直接在"Headers"查看到,如图:

2.下面我们就可以对json文件进行解析了。这里注意的是,url中并不是所有参数都有用,这里只需提出tn=resultjson_com& ipn=rj& word=风景图片大全& pn=60& rn=30这几个参数就行,核心是提取到第二个"ObjURL"信息,这个是图片位置所在,主要代码如下:

3.图片信息提取成功后,我们就可以进行图片的下载了,这里比较简单,主要用到requests这个包,就是基本的文件写入操作,只不过是二进制的写入,主要代码如下:

程序运行结果如下,已经打印出下载信息:

对应的图片也已经下载在"F:\picture\baidu"这个目录下边:

这里有些图片由于url已失效,所以下载后不能显示。

至此,我们就完成了百度图片信息的提取以及图片的下载。整个过程来看,其实很简单,就是抓包分析,获取到json文件,然后解析,提取到自己需要的信息,最后就能进行图片的下载,只要你有一定的python基础,会基本python爬虫,很快就能完成图片信息的爬取和下载,网上也有很多这方面的资料,你可以搜一下,对你帮助一定很大,我这里不在赘述,希望以上分享的内容能对你有所帮助吧。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何爬取百度图片的内容
本文地址: https://pptw.com/jishu/328125.html
什么是化油器混合气 python 移除文件夹

游客 回复需填写必要信息