本文主要是介绍【爬虫获取数据集(附代码)】Python爬取动态加载网页图片:以bd识图为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近小组在做深度学习的课设,需要一些数据集,由于直接用关键词搜出来的图片会混入一些奇怪的图片,为了使数据集更准确,用上了bd的以图搜图功能。
打开以后是一个动态加载的网页,按F12打开调试工具DevTools。
选择Network下的XHR(XMLHttpRequest),过滤AJAX请求。
刷新一下网页,下拉滚动条让它抓包。
在Name中找到图中框处来的请求, 在Preview里可以看到有一个list装着我们想要的图片。
在文末的代码中替换掉sign、sids和logid字段的值,运行程序。
爬取到414张图片,下载保存在本地的路径需要自己改。
可以看到已经成功下载啦!
写的比较简单,主要是教程,有空再写一下原理。
import requests
import osdef getManyPages():params=[]for i in range(1,20,1):params.append({'sign': '**********',"srcp": "crs_pc_similar","tn": "pc","idctag": "gz","sids": "*********","logid": "*********","promotion_name": "pc_image_shitulist",'tpl_from': "pc","page": i})url = 'https://graph.baidu.com/ajax/pcsimi'urls = []urlsSet = set()count=1for i in params:u1=requests.get(url,params=i).json().get('data').get('list')for j in u1:u2=j.get('thumbUrl')#print('['+str(i)+']',end='')print("["+str(count)+"]",end="")print(u2)urls.append(u2)urlsSet.add(u2)count=count+1print(urlsSet)print(len(urlsSet))return urlsSetdef getImg(dataList, localPath):if not os.path.exists(localPath): # 新建文件夹os.mkdir(localPath)x = 0for i in dataList:if i != None:print('正在下载:%s' % i)ir = requests.get(i)open(localPath + '%d.jpg' % x, 'wb').write(ir.content)x += 1else:print('图片链接不存在')if __name__ == '__main__':dataList = getManyPages() # 参数1:关键字,参数2:要下载的页数getImg(dataList,'D:/pythonProject/shitu/梨2/') # 参数2:指定保存的路径
参考了下面这篇文章,感谢!
python学习(7):python爬虫之爬取动态加载的图片,以百度图片为例_欢迎来到Jimmy的博客-CSDN博客
这篇关于【爬虫获取数据集(附代码)】Python爬取动态加载网页图片:以bd识图为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!