Python 爬虫闯关(第一关)
在学习爬虫时,遇到了一个有意思的网站,这个网站设置了几个关卡,需要经过爬虫进行闯关,随着关卡的网后,难度不断增加,在闯关的过程中需要学习不同的知识,你的爬虫水平也自然随之提高。
今天我们先来第一关,访问http://www.heibanke.com/lesson/crawler_ex00/:

按照提示,我们把数字放到地址栏的后面,再次进行访问:

发现,还要再用新的数字放在地址栏进行访问,我们可以猜测了,第一关是将页面出现的数字填写到当前 url 的尾部进行访问,然后会得到一个新的数字,再用它替换 url 中的尾部数字,这样不断循环往复,直到页面出现成功标识:

那么思路也有了:
- 解析页面中的数字;
- 将数字拼接成新的 URL;
- 访问新的 URL,重复第 1 步;
- 直至页面没有数字可以解析到!
逻辑比较简单,这里我们直接上代码了:
BeautifulSoup 实现
# coding=utf-8
import requests, bs4, re
url = 'http://www.heibanke.com/lesson/crawler_ex00/'
while True:
# download the page
print("forward to page %s ..." % url)
response = requests.get(url)
print("the return code : " + str(response.status_code))
soup = bs4.BeautifulSoup(response.text, "html.parser")
# 获取页面数字
comic = soup.select('h3')
print(comic[0].getText())
number = re.findall("\d+", comic[0].getText())
if number == []:
print('The end.')
break;
else:
url = 'http://www.heibanke.com/lesson/crawler_ex00/' + number[0] # 拼接新地址

selenium 实现
# coding=utf-8
import requests, re
from selenium import webdriver
url = 'http://www.heibanke.com/lesson/crawler_ex00/'
browser = webdriver.Firefox()
while True:
# download the page
print("Forward to page %s ..." % url)
browser.get(url)
elem = browser.find_element_by_tag_name('h3')
# get the url of the for the next page
print(elem.text)
number = re.findall("\d+", elem.text)
if number == []:
print('The end.')
browser.quit()
break;
else:
url = 'http://www.heibanke.com/lesson/crawler_ex00/' + number[0] # 拼接新地址
到这里我们才能看到最终成功的页面长这样:

好了,第一关相对来说比较容易,下次我们来搞一下第二关,又兴趣的可以自己先上手攻取下了~
如果觉得有用,欢迎关注我的微信,一起学习,共同进步,不定期推出赠书活动~

最近搜集到慕课网视频,视频内容涵盖 Python、Java、PHP、前端、小程序、算法、架构、数据库等等!关注本公众号,后台回复「慕课网」即可获取下载地址。
Python 爬虫闯关(第一关)的更多相关文章
- Python:黑板课爬虫闯关第一关
近日发现了[黑板课爬虫闯关]这个神奇的网页,练手爬虫非常的合适 地址:http://www.heibanke.com/lesson/crawler_ex00/ 第一关非常的简单 get 请求网址,在响 ...
- python爬虫1:第一个爬虫
1.python2.3的库名不同,如果版本不同记得改. Python2.x 有这些库名可用: urllib,urllib2,urllib3,httplib,httplib2,requests Pyth ...
- python爬虫心得(第一天)
爬虫是什么? 我个人觉得用简单通俗的话来说就是在浏览网页的过程中将有价值的信息下载到本地硬盘或者是储存到数据库中的行为. 爬虫的基础认知 可以参考此链接:https://www.imooc.com/a ...
- python3 黑板客爬虫闯关游戏(一)
这是学习python爬虫练习很好的网站,强烈推荐! 地址http://www.heibanke.com/lesson/crawler_ex00/ 第一关猜数字 很简单,直接给出代码 import ur ...
- Python Challenge 第一关
偶然在网上看到这个,PYTHON CHALLENGE,利用Python语言闯关,觉得挺有意思,就记录一下. 第0关应该算个入口吧,试了好几次才试出来,没什么代码就不写了.计算一个结果出来就行. 第一关 ...
- the python challenge闯关记录(0-8)
0 第零关 2**38 = 274877906944 下一关的url:http://www.pythonchallenge.com/pc/def/274877906944.html 1 第一关 移位计 ...
- <爬虫>黑板爬虫闯关02
import requests from lxml import etree ''' 黑板爬虫闯关02 网址:http://www.heibanke.com/lesson/crawler_ex01/ ...
- <爬虫>黑板爬虫闯关01
import requests from lxml import etree import time ''' 黑板爬虫闯关 网址:http://www.heibanke.com/lesson/craw ...
- sql-lib闯关11-20关
从第11关开始,我们就进入到了POST注入的世界了. POSTpost是一种数据提交方式,它主要是指数据从客户端提交到服务器端,例如,我们常常使用的用户登录模块.网站的留言板模块等,在这些功能模块中我 ...
随机推荐
- Lumen开发:lumen源码解读之初始化(3)——单例(singleton)与中间件(Middleware)
版权声明:本文为博主原创文章,未经博主允许不得转载. 今天来讲讲Lumen的singleton和Middleware,先来看看起始文件bootstrap/app.php / * | --------- ...
- Robbery(记忆化搜索)
Robbery Inspector Robstop is very angry. Last night, a bank has been robbed and the robber has not b ...
- SpringMVC结合REST
一.什么是REST REST即 Representational State Transfer,也就是(资源)表现层状态转化.资源是指网络上的一个实体或者说是网络上的一个具体信息. 每种资源对应一个特 ...
- hive深入使用
Hive表的创建和数据类型 https://cwiki.apache.org/confluence/display/Hive/Home 管理表和外部的区别 # 管理表 1. 内部表也称之为MANAGE ...
- Android Resources
Ref:Android开发最佳实践 Ref:Android高手速成--第一部分 个性化控件(View) Ref:Android高手速成--第二部分 工具库 Ref:Android高手速成--第三部分 ...
- LeetCode:盛最多水的容器【11】
LeetCode:盛最多水的容器[11] 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...
- iOS JSON 和 Mode l转换
MJExtension 是我们项目开发常用的一个第三方框架 很好用. https://github.com/CoderMJLee/MJExtension 映射 json value key 直 ...
- IOS 代码风格习惯 总结1
从我大三下学期开始工作开始, 几乎都是孤独的开发 因为身边开发ios 不多 ,除了学习开源的代码优秀风格技巧 剩下的 就是自己造, 所以 养成了 好多不好的习惯. 本知道面向对象的好处 ,但是实际开 ...
- eclipse中,项目无法在tomcat中发布(project facet java version 1.7 is not supported)
在tomcat中发布项目时无法添加项目,错误信息:project facet java version 1.7 is not supported,如下图 这是由于你的tomcat的jdk版本低于你项目 ...
- 【六】MongoDB管理之副本集
一.复制介绍 所谓的复制就是在多个主机之间同步数据的过程. 1.数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务器出现数据故障而出现数 ...