GlidedSKY挑戰之五 CSS反爬

2021-09-27 03:53:16 字數 2237 閱讀 6497

**:

雖然幾個挑戰沒寫完,簡單的看了一下,爬蟲工作過程中一些問題在這裡都有展示,是乙個可以檢驗爬蟲工作者的能力的**,跟玄幻**中挑戰塔一樣。

說一下,第5個挑戰 css反爬:通過css修改了樣式,在頁面上看到的數字展示跟原始碼中的展示不一樣

直接上**了。。。

import re

from operator import itemgetter

import requests

from lxml import etree

items =

url =

'level/web/crawler-css-puzzle-1'

headers =

response = requests.get(url, headers=headers, timeout=20)

# print(response.content.decode())

html = etree.html(response.content.decode())

divs = html.xpath(

'//div[@class="row"]/div[@class="col-md-1"]'

)result =

0# print(len(divs))

for div in divs:

clas = div.xpath(

'./div'

) a_items =

# 獲取每個數字所在位置

left =

1# 數字第幾位

for cla in clas:

class_name = cla.xpath(

'./@class'

) res = class_name[0]

+'.*'

div_num = cla.xpath(

'./text()'

)# 獲取每乙個的值

class_value = re.findall(res, response.content.decode())

item =

for value in class_value:

vals = value.split(

':')

item[vals[0]

.strip()]

= vals[1]

.strip(

).strip(

'em'

) valu =

false

if'opacity'

in item:

if item[

'opacity']==

0:# 隱藏元素

pass

elif

'content'

in item:

# 該位置顯示的最後

result = item[

'content'

]# print(type(result), int(result.strip('"')))

int(result.strip(

'"')))

elif

'left'

in item:

valu = left +

int(item[

'left'])

# 元素移動之後所在位置

else

: valu = left # 元素保持原來的位置

if valu:

left +=

1 item_num =

item_num[

'num']=

''.join(div_num)

item_num[

'valu'

]= valu

if a_items:

a_items.sort(key=itemgetter(

'valu'

), reverse=

false

) nums =

''for item in a_items:

num = item[

'num'

] nums += num

int(nums)

)# 這一頁所有的資料列表

print

(items)

檢查每乙個元素 屬性裡面的 class 類,在原始碼中代表什麼意思。多看幾遍就會有發現

glidedsky挑戰 CSS反爬

相應頁面 分析這個頁面的特點 頁面顯示出來的資料不同 頁面中部分顯示的資料可能在標籤中不顯示 頁面 現數字順序是亂的,不好組合拼接,如第3個字元 346對應634 頁面中,有些字元還出現其它的數字來擾亂數字。是不是這些資料似曾相識,沒錯了,這些css 就是頁面數字顯示出來的規則。沒辦法了,那就分析 ...

glidedsky爬蟲之css反爬蟲

author cjp file cssfan.py time 2020 9 11 16 37 import re from operator import itemgetter import requests from lxml import etree defgao url items heade...

CS,五,演算法

這章開始講演算法了,演算法是cs 的核心主題。在計算機能夠完成乙個任務之前,必須給出乙個演算法來精確地告訴計算機去做什麼,這裡說的演算法,是廣義上的執行步驟,並不是說你單純的 if else 就不能叫演算法了,只要是一系列計算機執行步驟,都能稱得上是演算法。演算法的定義 乙個可終止過程的一組有序的,...