之前也没有系统的学习过python,看其他源码的时候也是似懂非懂的看着理解意思。最近比较有空,就想更系统的学习一下,在知乎上看到大神推荐了一个Python爬虫闯关网站,便想试试。

下面是第一关的介绍,黑板课爬虫第一关。

点击进入网站以后,如下图所示:

做了一下尝试,先手动在网址后面输入数字14901,得到下面结果。

这个时候提示,要将数字改成63668,

可以理解到,就是不断在网页页面读取数字信息,然后添加到网址http://www.heibanke.com/lesson/crawler_ex00后面,直到闯关成功为止。

分析一下大概思路:用python获取网页,然后从网页的内容中提取这个数字,再把这个数字加在网址后面继续进行以上操作。那如何知道是否到了最后一个网页呢?先手动进行几次操作,观察网页内容,找出他们的相同点,用正则表达式判断即可。

1.获取网页内容

python有很多强大的工具,在这里可以利用requesets来获取网页内容。如

import requestshtml = requests.get('http://www.baidu.com').content
print html

这样即可获取网页中的内容。

2.提取网页中的数字

通过前面的手动尝试观察,发现第一步的提示是“你需要在网址后输入数字*****”,后来的都是“下一步你需要输入的数字是*****”。在这里需要涉及到的一个概念是正则表达式,正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

可以归纳到,除了第一次,其余的数字均在“下一个你需要输入的数字是”和“.”之间。

正则表达式可以写为:'下一个你需要输入的数字是(\d+)\.'
但是这个表达式不能满足第一次网页的内容,因为对于第一次的显示,没有“.”作为结尾。通过requests读取的网页是html文件,可以看到数字后面第一个符号是<,所以需要修改一下正则表达式

'数字[^\d]*(\d+)[\.<]'

其中[^\d]*表示零次或多次非数字,(\d+)记录出现的数字。

可以注意到每次的数字都是五次,所以也可以写成如下形式:

'数字[^\d]*(\d{5})'

接下来运行获得最后网址即可

# coding=utf-8import requests
import rewebsite = 'http://www.heibanke.com/lesson/crawler_ex00/'
ruler = re.compile(r'数字[^\d]*(\d+)[\.<]')html = requests.get(website).content
number = ruler.findall(html)
index = 1
while number:website2 = website + number[0]html = requests.get(website2).contentnumber = ruler.findall(html)print "访问网页%d: %s" %(index, website2)index += 1
else:print "\n下一关的入口: %s" % website2

黑板课爬虫闯关第一关相关推荐

  1. 一个爬虫练习游戏:黑板课爬虫闯关

    网址:http://www.heibanke.com/lesson/crawler_ex00/ 大概用了一小天的时间吧,把这五关给过了,还挺好玩的.推荐小白玩玩.直接po代码了. 我装pytesset ...

  2. XSS闯关——第一关:level1

    第一关:level1 这里的payload为4,查看地址栏与之对应的传参为test 页面没有输入的地方,所以可以直接在地址框注入JavaScript脚本 回车过关:

  3. SQL注入闯关第一关-Less1

    目录 一.判断注入点类型 1.单引号测试 2.进行验证: 二.确定字段数 三.使用联合查询,确定显示位置 四.确定显示位置后,查询库名 五.查询表名 六.查询列名 七.查询用户名和密码 一.判断注入点 ...

  4. Python 爬虫闯关

    (个人经验,仅供参考,错误之处,敬请谅解) 前言 学到python的爬虫,有个链接是黑板课闯爬虫关的,于是去试了下     第一关     第二关     第三关:链接以此类推,不过有个防护,登陆之后 ...

  5. sqli-labs第一关的闯关

    第一关:单引号错误 SQL的注入最终是为了拿到数据库的文件或者数据. 刚进页面,显示需要输入id.于是我们使用在地址栏后面加上 ?id=1 第二行的黄色字体是我自己添加的内容,表示被传入mysql执行 ...

  6. python生成一笔画_用Python玩烧脑小游戏《一笔画完》,瞬间闯到100关

    原标题:用Python玩烧脑小游戏<一笔画完>,瞬间闯到100关 " 昨天和朋友出去外面吃饭,吃完饭后朋友打开了一个小程序玩了起来...... 游戏长这样 大概玩法是:从地图中猫 ...

  7. 第一关:干掉链表这个小喽啰

    第一关:干掉链表这个小喽啰 文章目录 第一关:干掉链表这个小喽啰 前备知识: 具体代码实现 单链表 循环链表 双向循环链表 相关习题: 前备知识: 链表作为线性数据结构的一种,提它之前必须得讲下:顺序 ...

  8. Python游戏开发:最强大脑第一关,数字华容道

    前言 freegames是Apache2许可的Python游戏集合,旨在用于教育和娱乐,完全是开源的,我们只要引用编写就好,当前在最强大脑的舞台上的第一关就是数字华容道,好多人都栽在了上面,如果你也想 ...

  9. SQL注入之时间盲注 和 报错注入(sql-lab第一关为例)

    什么是时间盲注 时间盲注指通过页面执行的时间来判断数据内容的注入方式,通常用于数据(包含逻辑型)不能返回到页面中的场景,无法利用页面回显判断数据内容,只能通过执行的时间来获取数据. 时间盲注的过程 1 ...

最新文章

  1. marquee实现文字移动效果;js+div实现文字无缝移动效果
  2. FPGA_进阶篇开篇
  3. Windows环境下maven 安装与环境变量配置
  4. mysql分片库分页查询_准备开发一个数据库分片的中间件,请问下分页查询用什么样的算法效率较高?...
  5. C# TCP服务器和客户端
  6. c#.net常用函数列表
  7. 使用SQL语句操作数据
  8. .netcore 2.0 mysql_MySQL数据库之.Net Core 2.0 使用EF连接MySQL数据库
  9. 计算机考试考什么二级,计算机国家二级考试会考什么内容?怎么考?
  10. 一文弄懂数据挖掘的十大算法,数据挖掘算法原理讲解
  11. windows设置cmd命令行背景为半透明
  12. Eviews做ARIMA模型
  13. 推荐一款手机app自动点击神器
  14. 实验室只有1080显卡,老师还想让发深度学习论文怎么办?
  15. 整站优化与网页优化的区别
  16. 速达开发版ERP移动端 App 操作使用说明
  17. Sprite Kit教程
  18. 【无标题】上班族做什么副业赚钱?4种副业让你超过主业!
  19. 新手小白也能会的从淘宝口令到下载完淘宝直播回放视频的步骤详情
  20. 虚幻引擎学习笔记——Month1 Week3

热门文章

  1. 无法安装冰点还原_电脑无法开机,重装系统太麻烦?不如试试直接备份恢复系统...
  2. AIX7.1 安装配置 EMC CLARiiON 存储驱动软件
  3. 【读书笔记】《贫穷的本质》- [印度] Abhijit Banerjee / [法] Esther Duflo
  4. nginx(二)---Nginx 日志Log
  5. 毫米波雷达的系统设计细节(1) - 从雷达方程到雷达威力图
  6. 开blog记录,咩哈哈
  7. 【DSP库窗函数】ARM官方最新DSP库中窗函数的使用方法
  8. 【多态】【虚表指针与虚表】【多继承中的多态】
  9. python实现闰年判断
  10. 计算机类普刊有哪些,基础数学类的容易发表的普刊有哪些