91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

測試你的爬蟲能力是否及格

電子工程師 ? 來源:fqj ? 2019-05-22 17:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在網(wǎng)上看到一個非常有意思的 Python 游戲通關(guān)網(wǎng)站,一共有 33 關(guān),每一關(guān)都需要利用 Python 知識解題找到答案,然后進入下一關(guān)。

很考驗對 Python 的綜合掌握能力,比如有的闖關(guān)需要用到正則表達式,有的要用到爬蟲。

我們平常學(xué) Python 都是按章節(jié)順序、包或者模塊來學(xué),容易前學(xué)后忘。正好可以拿這個網(wǎng)站來綜合測試一下對 Python 的掌握情況,以便查缺補漏。

來說說這個網(wǎng)站怎么玩。

mark

這是網(wǎng)站主頁面,很有歷史感對吧,誕生了已有十幾年了。但千萬不要因為看著像老古董而小瞧它。

mark

我們來玩玩看,點擊「get challenged」開始挑戰(zhàn)。

第 0 關(guān)是 Warming up 熱身環(huán)節(jié):

這一關(guān)要求是修改 URL 鏈接,給的提示是電腦上的數(shù)學(xué)表達式:2 的 38 次方,所以大概就是需要計算出數(shù)值,然后修改url 進入下一關(guān)。

所以這關(guān)就是考 Python 的基本數(shù)值運算,你知道怎么算么?

打開 Python 自帶終端,一行代碼就能計算出結(jié)果:

mark

把原鏈接中的0替換為274877906944回車就會進入下一關(guān):

mark

游戲這就正式開始了。圖片中的筆記本給了三組字母,很容易發(fā)現(xiàn)規(guī)律:前面的字母往后移動兩位就是后面的字母。

那么需要做的就是根據(jù)這個規(guī)律把下面的提示字符串,做位移解密得到真正的句子含義:

這道題考察字符串編碼和 for 循環(huán)相關(guān)知識,代碼實現(xiàn)如下:

1text='''gfmncwmsbgblrrpylqjyrcgrzwfylb.rfyrqufyramknsrcpq 2
ypcdmp.bmglegrglzwfylbgqglcddgagclrylbrfyr'q 3
ufwrfgqrcvrgqqmjmle.sqgleqrpgle.kyicrpylq() 4
gqpcamkkclbcb.lmuynnjwmlrfcspj.''' 5 6text_translate='' 7foriintext: 8
ifstr.isalpha(i): 9
n=ord(i)10
ifi>='y':11
n=ord(i)+2-2612
else:13
n=ord(i)+214
text_translate+=chr(n)15
else:16
text_translate+=i17print(text_translate)

得到結(jié)果:

1ihopeyoudidnttranslateitbyhand.2thatswhatcomputersarefor.3doingitinbyhandisinefficientandthat'swhythistextissolong.4usingstring.maketrans()isrecommended.nowapplyontheurl.

作者很風趣,當然不能手動去一個推算了,推薦用 string.maketrans() 這個方法解決,我們上面采取的是比較直接的方法,官方給出了更為精簡的方法:

1importstring2l=string.lowercase3t=string.maketrans(l,l[2:]+l[:2])4print(text.translate(t))

然后把 url 中的 map 改為ocr回車就來到了第 2 關(guān):

mark

作者接著說過關(guān)的提示可能在書里(當然不可能了)也可能在網(wǎng)頁源代碼里。那就右鍵查看源代碼往下拉看到綠色區(qū)域,果然找到了問題:

mark

意思就是:要在下面這一大串字符里找到出現(xiàn)次數(shù)最少的幾個字符

考察了這么幾個知識點:

正則表達式提取字符串

list 計數(shù)

條件語句

如果是你,你會怎么做?

首先,用 Requests 請求網(wǎng)頁然后用正則提取出字符串,接著 for 循環(huán)計算每個字符出現(xiàn)的次數(shù)。

1%6104 2$6046 3@6157 4_6112 5^6030 6#6115 7)6186 8&6043 9!607910+606611]615212*603413}610514[610815(615416{60461718e119q120u121a122l123i124t125y1

可以看到出現(xiàn)次數(shù)最少的就是最后幾個字符,合起來是「equality」,替換 url 字符就闖過過了第 2 關(guān)進入下一關(guān)繼續(xù)挑戰(zhàn)。是不是有點意思?

后面每一關(guān)都需要用到相關(guān)的 Python 技巧解決,比如第 4 關(guān):

mark

這一關(guān)作者弄了個小惡作劇,需要手動輸入數(shù)值到 url 中然后回車,你以為這樣就完了么?并沒有它有會不斷重復(fù)彈出新的數(shù)值讓你輸入,貌似無窮盡。

所以,這一關(guān)肯定不能采取手動輸入的方法闖關(guān),自然要用到 Python 了。要實現(xiàn)自動填充修改 url 回車跳轉(zhuǎn)到新 url,循環(huán)直到網(wǎng)頁再也無法跳轉(zhuǎn)為止這一功能。

如果是你,你會怎么做?

其實,一段簡單的爬蟲加正則就能搞定。思路很簡單,把每次網(wǎng)頁中的數(shù)值提取出來替換成新的 url 再請求網(wǎng)頁,循環(huán)下去,代碼實現(xiàn)如下:

1importrequests 2importre 3importos 4 5#首頁url 6resp=requests.get( 7'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345').text 8url='http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' 9#計數(shù)器10count=011whileTrue:12try:13#提取下一頁動態(tài)數(shù)值14nextid=re.search('d+',resp).group()15count=count+116nextid=int(nextid)17except:18print('最后一個url為:%s'%nexturl)19break2021#獲取下一頁url22nexturl=url+str(nextid)23print('url%s:%s'%(count,nexturl))24#重復(fù)請求25resp=requests.get(nexturl).text

輸出結(jié)果如下:

可以看到,最終循環(huán)了 85 次找到了最后一個數(shù)字16044,輸入到 url 中就闖關(guān)成功。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4879

    瀏覽量

    90153
  • 數(shù)值運算
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5109

原文標題:33關(guān)Python游戲,測試你的爬蟲能力到底及格不?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Python數(shù)據(jù)爬蟲學(xué)習內(nèi)容

    現(xiàn)行環(huán)境下大數(shù)據(jù)與人工智能的重要依托還是龐大的數(shù)據(jù)和分析采集,就如淘寶、京東、百度、騰訊級別的企業(yè)能夠通過數(shù)據(jù)可觀的用戶群體獲取需要的數(shù)據(jù)。而一般企業(yè)可能就沒有這種通過產(chǎn)品獲取數(shù)據(jù)的能力和條件。因此
    發(fā)表于 05-09 17:25

    Python爬蟲與Web開發(fā)庫盤點

    ,高層次的web抓取網(wǎng)頁,并從web站點的頁面中提取結(jié)構(gòu)化的數(shù)據(jù)Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。最爽的就是它是一個框架,任何人都可以根據(jù)需求方便的修改,里面有很多類型爬蟲的基
    發(fā)表于 05-10 15:21

    Python 爬蟲:8 個常用的爬蟲技巧總結(jié)!

    費的。7、gzip壓縮有沒有遇到過某些網(wǎng)頁,不論怎么轉(zhuǎn)碼都是一團亂碼。哈哈,那說明還不知道許多web服務(wù)具有發(fā)送壓縮數(shù)據(jù)的能力,這可以將網(wǎng)絡(luò)線路上傳輸?shù)拇罅繑?shù)據(jù)消減 60% 以上。這尤其適用于 XML
    發(fā)表于 01-02 14:37

    爬蟲犯罪有多遠

    不要在爬蟲犯罪的邊緣瘋狂試探!
    發(fā)表于 04-11 16:04

    爬蟲可以采集哪些數(shù)據(jù)

    一、爬蟲可以采集哪些數(shù)據(jù)   1.圖片、文本、視頻   爬取商品(店鋪)評論以及各種圖片網(wǎng)站,獲得圖片資源以及評論文本數(shù)據(jù)。   掌握正確的方法,在短時間內(nèi)做到能夠爬取主流網(wǎng)站的數(shù)據(jù),其實非常容易
    發(fā)表于 10-15 17:25

    應(yīng)對反爬蟲的策略

    被機器人肆意地濫用,網(wǎng)站的安全和流量費用就會面臨嚴重威脅,因此很多網(wǎng)站都會想辦法防止爬蟲程序接入。為了能夠更好的爬蟲,我們需要使用可變的ip地址,建立網(wǎng)絡(luò)爬蟲的第一原則是:所有信息都可以偽造。但是有
    發(fā)表于 12-12 17:39

    網(wǎng)絡(luò)爬蟲之關(guān)于爬蟲http代理的常見使用方式

    在做爬蟲的過程中,如果爬取的頻率過快,不符合人的操作模式。有些網(wǎng)站的反爬蟲機制通過監(jiān)測到你的IP異常,訪問頻率過高。就會對進行封IP處理。目前已有比較多的第三方平臺專門進行代理IP
    發(fā)表于 04-26 17:43

    什么是爬蟲?

    什么是爬蟲爬蟲的價值?最簡單的python爬蟲爬蟲基本架構(gòu)
    發(fā)表于 11-05 06:13

    0基礎(chǔ)入門Python爬蟲實戰(zhàn)課

    情況及薪資水平……諸如此類,不勝枚舉。只要是信息,只要你能看到它,想批量獲取它,都可以使用爬蟲來實現(xiàn)。但,自學(xué)爬蟲存在不少障礙,可能會有這些困擾:看了書,上了課,卻依然不會爬蟲自學(xué)遇
    發(fā)表于 07-25 09:28

    python網(wǎng)絡(luò)爬蟲概述

    數(shù)據(jù),則可以通過爬蟲從網(wǎng)上抓?。辉赪eb安全方面,使用爬蟲可以對網(wǎng)站是否存在某一漏洞進行批量驗證、利用;在產(chǎn)品研發(fā)方面,可以采集各個商城物品價格,為用戶提供市場最低價;在輿情監(jiān)控方面,可以抓取、分析新浪微博
    發(fā)表于 03-21 16:51

    Python爬蟲速成指南讓快速的學(xué)會寫一個最簡單的爬蟲

    本文主要內(nèi)容:以最短的時間寫一個最簡單的爬蟲,可以抓取論壇的帖子標題和帖子內(nèi)容。 本文受眾:沒寫過爬蟲的萌新。
    的頭像 發(fā)表于 06-10 09:57 ?7645次閱讀
    Python<b class='flag-5'>爬蟲</b>速成指南讓<b class='flag-5'>你</b>快速的學(xué)會寫一個最簡單的<b class='flag-5'>爬蟲</b>

    爬蟲是如何實現(xiàn)數(shù)據(jù)的獲取爬蟲程序如何實現(xiàn)

    進入大數(shù)據(jù)時代,爬蟲技術(shù)越來越重要,因為它是獲取數(shù)據(jù)的一個重要手段,是大數(shù)據(jù)和云計算的基礎(chǔ)。那么,爬蟲到底是如何實現(xiàn)數(shù)據(jù)的獲取的呢?今天和大家分享的就是一個系統(tǒng)學(xué)習爬蟲技術(shù)的過程:先掌握爬蟲
    發(fā)表于 01-02 16:30 ?10次下載
    <b class='flag-5'>爬蟲</b>是如何實現(xiàn)數(shù)據(jù)的獲取<b class='flag-5'>爬蟲</b>程序如何實現(xiàn)

    網(wǎng)絡(luò)爬蟲是否合法

    網(wǎng)絡(luò)爬蟲在大多數(shù)情況中都不違法,其實我們生活中幾乎每天都在爬蟲應(yīng)用,如百度,在百度中搜索到的內(nèi)容幾乎都是爬蟲采集下來的(百度自營的產(chǎn)品除外,如百度知道、百科等),所以網(wǎng)絡(luò)
    的頭像 發(fā)表于 03-21 17:20 ?1.3w次閱讀

    Python爬蟲 真的會寫爬蟲嗎?

    以為真的會寫爬蟲了嗎?快來看看真正的爬蟲架構(gòu)!
    的頭像 發(fā)表于 05-02 17:02 ?4667次閱讀
    Python<b class='flag-5'>爬蟲</b> <b class='flag-5'>你</b>真的會寫<b class='flag-5'>爬蟲</b>嗎?

    爬蟲的學(xué)習方法

    爬蟲的本質(zhì)就是模仿人類自動訪問網(wǎng)站的程序,在瀏覽器中做的大部分動作基本都可以通過網(wǎng)絡(luò)爬蟲程序來實現(xiàn)。
    的頭像 發(fā)表于 02-23 14:11 ?1892次閱讀
    <b class='flag-5'>爬蟲</b>的學(xué)習方法