Glidedsky系列—爬虫CSS反爬

本文分析了Glidedsky网站上的一个CSS反爬虫问题,讲解了如何通过理解网页源码和CSS样式来解析隐藏的数字信息。通过对div样式的逐个分析,特别是关注left属性的变化,推断出数字的实际位置。代码实现部分展示了如何应用这些规律来提取正确的内容。
摘要由CSDN通过智能技术生成

前言

题目网址为:http://glidedsky.com/level/web/crawler-css-puzzle-1


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目描述

在这里插入图片描述

二、题目分析

1.网页分析

我们看到的网页展示效果:

在这里插入图片描述
网页对应的源码:
在这里插入图片描述

我们可以发现网页所展示的内容跟我们看到的div文本内容有些差异,如果直接获取文本内容,得到的值肯定是不对的,这次网页使用的是CSS反爬,可以利用CSS样式来改变div属性的位置、数值、以及是否可见等等,这种类型的反爬不难,总的来说就是找规律,需要耗费一定的精力去找寻它的变化规律。

我们开始逐个分析div的样式,其中文本值为4的div样式属性,我们可以看到这个4在页面展示中是没有的,它其中的样式属性opacity是css样式中设置透明度的,值为0,也就不可见
在这里插入图片描述
我们在前端看到的数值为369,而div中剩下数字顺序为6,3,9 我们再继续分析每个数字的样式属性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们观察发现,9位置没有变化,它的样式中不包含left属性,而位置发生的6和3都有left属性,6的left值为1em,3的left值为-1em,通过width属性我们可以知道,每个数字的宽度就是1em,而6向右偏移1个单位,3向左偏移一个单位就恰好是我们最终看到的页面效果,我们就此猜测数字最终的位置就是初始的位置加上left上的数值,然后我们可以观察后面的div来验证我们的猜想。

然而事情并没有这么快就结束,我们发现数值77对应的div下面一个文本数值都没有,只有一个奇奇怪怪的::before,本着不懂就百度的心态,CSS的知识点又增加了
在这里插入图片描述
其中的content值就是我们需要的

在这里插入图片描述
查看网页的源码,我们可以找到样式对应的属性
在这里插入图片描述


2.代码实现

代码如下:

import re
import requests
from lxml import etree

def get_token():
    resp = s.get(login_url)
    token = re.findall('<meta name=&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值