简单一点,利用xpath解析爬取站长素材的图片

先看爬取成果:

把美女图片下载到一个专门的文件夹下,时不时浏览一下时不时很称心如意呢?(无图展示)

 

具体流程:
首先来到站长之家: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:针对存储有透明状态的图片;

....

最后的最后,请大家有所受益!!!

喜欢这篇文章的可以给我点下赞,加波关注,共同成长,感谢支持!!!

有疑问的同学可以私信我,咱们一起交流一下。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值