本文转载自微信公众号《蔡J学Python》,作者游石九里。转载本文请联系蔡J学习Python公众号。大家好,我是J哥,本文由好友游十里投稿。相信很多设计小伙伴都有好的灵感,但是没有好的设计素材,今天就来了。蛇皮网有4000种设计素材,取之不尽,用之不竭,如下图:好了,废话不多说,开始用Python收藏。01需求分析从Shetu.com收集素材图片,目标URL-->请求数据-->分析数据-->提取数据-->保存数据。02技术栈我们首先使用的技术包括:urllib、requests、bs4等03采集过程1.分析网页结构打开网址:https://699pic.com/paihang/tupian.html,分析结构网页的,我们可以在首页看到图片数据的杂论,这里我们抓取的是“今日热点”图片,点击发现更多:来到目标页面,将滚轮拖到底部,找到有40个页面,也就是我们今天要爬取的4000张设计图片:2.发起请求然后遍历list中的每一个url,然后发起请求:forurlinurllist:resp=requests.get(url,headers=hd)html=resp.content.decode('utf-8')3.数据分析得到了一个html对象,抓取了页面数据信息最后需要对页面进行解析。我这里使用的解析库是bs4(偏好)。当然xpath也是可以的。通过分析页面元素,我们发现每个翻页中的图片都有这样一个规律:因此,我们可以通过bs4的select方法,抓取所有class='lazy'的img标签,得到一个列表,然后找到图片的链接通过测试保存在img标签的data-original属性中,通过img.attrs['data-original']获取,再用'https:'拼接得到完整的图片链接。forimginimgs:img_url=img.attrs['data-original']total_url=base_http_str+img_urlprint(total_url)#print('--'*60)imgurllist.append(total_url)4.提取并保存数据,最后使用urlretriveurllib中的方法,将图片保存到本地。defwriteData(imgurllist):forindex,urlinenumerate(imgurllist):urllib.request.urlretrieve(url,'image/'+'%s.png'%index)print('%s图片下载完成'%index)04运行爬虫运行爬虫代码,效果如下:图片下载完成,但是用传统的方式有点慢。下次试试多线程,提高爬虫的效率。
