一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

mark

這是網(wǎng)站主頁面,很有歷史感對(duì)吧,誕生了已有十幾年了。但千萬不要因?yàn)榭粗窭瞎哦∏扑?/p>

mark

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

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

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

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

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

mark

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

mark

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

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

這道題考察字符串編碼和 for 循環(huán)相關(guān)知識(shí),代碼實(shí)現(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.

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

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

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

mark

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

mark

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

考察了這么幾個(gè)知識(shí)點(diǎn):

正則表達(dá)式提取字符串

list 計(jì)數(shù)

條件語句

如果是你,你會(huì)怎么做?

首先,用 Requests 請求網(wǎng)頁然后用正則提取出字符串,接著 for 循環(huán)計(jì)算每個(gè)字符出現(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ù)最少的就是最后幾個(gè)字符,合起來是「equality」,替換 url 字符就闖過過了第 2 關(guān)進(jìn)入下一關(guān)繼續(xù)挑戰(zhàn)。是不是有點(diǎn)意思?

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

mark

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

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

如果是你,你會(huì)怎么做?

其實(shí),一段簡單的爬蟲加正則就能搞定。思路很簡單,把每次網(wǎng)頁中的數(shù)值提取出來替換成新的 url 再請求網(wǎng)頁,循環(huán)下去,代碼實(shí)現(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#計(jì)數(shù)器10count=011whileTrue:12try:13#提取下一頁動(dòng)態(tài)數(shù)值14nextid=re.search('d+',resp).group()15count=count+116nextid=int(nextid)17except:18print('最后一個(gè)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 次找到了最后一個(gè)數(shù)字16044,輸入到 url 中就闖關(guān)成功。

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

    關(guān)注

    56

    文章

    4827

    瀏覽量

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

    關(guān)注

    0

    文章

    2

    瀏覽量

    5087

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

    爬蟲犯罪有多遠(yuǎn)

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

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

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

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

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

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

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

    什么是爬蟲?

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

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

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

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

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

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

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

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

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

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

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

    Python爬蟲 真的會(huì)寫爬蟲嗎?

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

    爬蟲的學(xué)習(xí)方法

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