GlidedSky——CSS反爬(偏移+伪类)

CSS可以排版出精美的页面;CSS也可以通过各种操作,使得用户最终看到的内容和HTML源码的内容千差万别。
让我们通过一些基本的CSS防爬手段(伪类+位置偏移),来巩固下大家的前端基础知识。

伪类是什么?伪类对元素进行分类是基于特征(characteristics)而不是它们的名字、属性或者内容;原则上特征是不可以从文档树上推断得到的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

需要获取伪类的父标签在通过标签匹配到它的content的值

div = response.xpath('.//div[@class="col-md-1"]/div')
class_name = div.xpath("./@class")[0]
num = re.findall(r"\.{}\:before\s*.*?\s*content\:\"(\d*)\"".format(class_name), response_str, re.S)[0]
print(num)

偏移是什么?包括元素在屏幕上占用的所有可见空间,元素的可见大小有其高度,宽度决定,包括所有内边距,滚动条和边框大小简单的说就是位置改变进行反爬

查看每个偏移量就可以看出他的偏移的规律从而写代码整理

div_list = response.xpath('.//div[@class="col-md-1"]/div')
div_list = div_list[1:]  #大于4个的class属于偏移量第一个是没用的。
number = [-1, -1, -1]  
for i in range(0, len(div_list)):
    div = div_list[i]
    class_name = div.xpath("./@class")[0]
    data = div.xpath("./text()")[0]
    left = re.findall(r"\.{}\s.*?\sleft\:(.*?)em".format(class_name), response_str)
    print(f"网页:{data}当前位置偏移量:{left},属于第{i}个值")
    if not left:
        # 如果left为空,表名位置不需要调整
        number[i] = data
    # 否则就需要调整位置
    else:
        index = i + int(left[0])
        number[index] = data
num = "".join(number)

这里的CSS反爬是通过伪类和偏移量结合的所以需要判断是属于偏移量的class还是伪类的。我只是一只菜鸡,如果需要完整代码可以私信,感谢关注!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值