ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

百度鲜花图像爬取

2022-04-18 10:04:38  阅读:208  来源: 互联网

标签:keyword get url image 鲜花 爬取 params urls 百度


深度学习依赖大量的数据,除了使用公开的数据集之外就是利用Python的爬虫技术自己收集和整理,爬虫的本质是利用代码模拟浏览器向网页发起请求,得到网站的相应进行分析从中获取想要爬取的数据,本例子利用代码在百度图片上搜索鲜花,将搜索到的图片保存到本地。

首先对百度图片搜索鲜花页面进行分析,图片是不断动态加载的,它是一个ajax请求,右键点击检查项打开网页分析窗口,查看新加载数据的URL及参数,参数中有queryWord和Word的值为搜索框输入的鲜花关键字,参数pn为从第几张开始加载,rn为加载多少张图片,将响应内容利用json解析工具进行解析,每张图片的的地址在thumbURL中。

根据上面的分析设计设计函数get_param(keyword,paginator)根据输入的关键字和页数,生成请求参数;定义函数get_urls(url,params) 拼接形成每一页的完整请求链接;定义函数get_image_url(urls,headers)获取页面响应,并转换成json格式,json数据的data字段中提取thumbURL字段值即每张图片的地址;定义函数get_image(keyword,image_url)请求图片地址,将图片数据下载到本地文件夹。

# 根据输入的关键字和页数,生成请求参数

def get_param(keyword,paginator):

keyword=urllib.parse.quote(keyword)  #对中文关键词转换编码

params=[]

for i in range(1,paginator+1):

     # 因为页面图片是动图加载的

params.append('tn=resultjson_com&logid=10338332981203604364&ipn=rj&ct=201326592&is=&fp=result&fr=&word={}&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=1&expermode=&nojc=&isAsync=&pn={}&rn=30&gsm=78&1650241802208='.format(keyword,keyword,30*i))

return params

 

# 定义函数拼接形成每一页的完整请求链接

def get_urls(url,params):

urls=[]

for param in params:

     urls.append(url+param)

return urls

 # 获取页面,将相应转换成json格式,从data字段提取每一张图片的地址

def get_image_url(urls,headers):

image_url=[]

for url in urls:

     page_json=requests.get(url,headers=headers).json()

     page_data=page_json.get('data')

     for data in page_data:

          if data:

               image_url.append(data.get('thumbURL'))

return image_url

# 获取图片地址将图片保存到本地文件夹中

def get_image(keyword,image_url):

file_name=os.path.join('.',keyword)

print(file_name)

if not os.path.exists(file_name):

     os.mkdir(file_name)

for index,url in enumerate(image_url,start=1):

     with open(file_name+'/{}.jpg'.format(index),'wb')as f:

          f.write(requests.get(url,headers=headers).content)

          if index !=0 and index % 30==0:

               print('第{}页下载完成'.format(index/30))

 if __name__=='__main__':

url='http://image.baidu.com/search/acjson?'

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36'}

# 只需要修改下面的关键字和页数,就爬取不同的百度图像

keyword='鲜花'   #定义关键字

paginator=2      #定义要爬取的页数

params=get_param(keyword,paginator)

urls=get_urls(url,params)

image_urls=get_image_url(urls,headers)

get_image(keyword,image_urls)

 

标签:keyword,get,url,image,鲜花,爬取,params,urls,百度
来源: https://www.cnblogs.com/yeskey/p/16158344.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有