先看爬取成果:
把美女图片下载到一个专门的文件夹下,时不时浏览一下时不时很称心如意呢?(无图展示)
具体流程:
首先来到站长之家:url="站长素材-分享综合设计素材的平台"
这里拿高清图片举例:点击高清页面,将会来到有很多美女图片的页面,老实说,有没有心动啊。
(我反正不会心动,已入佛家.....)
人生态度:一切都是因果轮回、命中注定;美女,钱财将会化作滚滚红尘烟消云散...
回归主题:
点击高清图片来到一个新的页面:
点击鼠标右键检,观察规律---------------------
‘’
请求方式是get请求;
第一页的url和第二页的不同;
https:标准的ua(用户代理)反爬;
......
‘’
这里就不多说了,咱们上代码:
# 网页源码+解析 import urllib.request from lxml import etree ''' https://sc.chinaz.com/tupian/xingganmeinvtupian.html https://sc.chinaz.com/tupian/xingganmeinvtupian_2.html https://sc.chinaz.com/tupian/xingganmeinvtupian_3.html ''' def create_request(page): if page==1: url="https://sc.chinaz.com/tupian/xingganmeinvtupian.html" else: url="https://sc.chinaz.com/tupian/xingganmeinvtupian_"+str(page)+".html" headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'} request=urllib.request.Request(url=url,headers=headers) return request def get_content(request): handler=urllib.request.HTTPHandler() opener=urllib.request.build_opener(handler) response=opener.open(request) content=response.read().decode('utf-8') return content def down_load(content): tree=etree.HTML(content) # src图片路径 alt图片说明 懒加载问题 使用src之前的名字 src2 src_list=tree.xpath('//div[@id="container"]//img/@src2') alt_list=tree.xpath('//div[@id="container"]//img/@alt') for i in range(len(src_list)): alt=alt_list[i] src=src_list[i] url='https:'+src urllib.request.urlretrieve(url=url,filename="./Black_girls/"+alt+".jpg") if __name__ == '__main__': # 程序入口: start_page=int(input('请输入起始页码:')) end_page=int(input('请输入结束页码:')) for page in range(start_page,end_page+1): request=create_request(page) content=get_content(request) down_load(content)
注释区解读:
简单来说爬这个图片就几步:
通过检查先观察url或者其他data数据啊,有什么不同,我们求同存异;
标准流程:请求对象定制、模拟浏览器向服务器发送请求、获取响应数据开始下载
重点说一下第三步如何下载:
通过之前分享的方法我们可以获取响应数据(content)
根据lxml下的etree这个包开始解析我们想要的数据(主要就是图片的链接 src)根据下载函数urllib.requesr.urlretrieve(路径,文件名)
最重要的一点必须安装xpath插件结合chrome浏览器解析数据!!!下面是具体步骤
安装成功后就可以获取src了
获取到src和alt就可以利用循环下载一页的图片了;
注意:tree.xpath()返回的数据是列表 里面的每个索引是字符串的数据类型...
路径的拼接:"http"+src 即可
文件名的设置:当前路径表示"./" 上一级目录表示"../" 我们可以把爬取的图片资源放在一个文件夹下面(这里默认是和python文件同一个文件)所以我们就要获取当前路径 即"./文件夹名/"+alt+'文件拓展名'
小知识:
一般网页上的文件分位三种(谷歌自己开发的那个高算法图片压缩不在内)
jpg(jepg):一般用来存照片,大多数图片;
gif:一般用于存储动图;
png:针对存储有透明状态的图片;
....
最后的最后,请大家有所受益!!!
喜欢这篇文章的可以给我点下赞,加波关注,共同成长,感谢支持!!!
有疑问的同学可以私信我,咱们一起交流一下。