最近在学爬虫,发现一个好玩的网站:黑板客爬虫闯关,以闯关的形式考验你的技术能力,非常不错.
现在把第一关实现.
题目描述:
打开网址 http://www.heibanke.com/lesson/crawler_ex00/ ,可看到
然后在网址 lesson/crawler_ex00/后添加93147会出现另一个数字,显然,靠手动输入数字是不现实的,那我们用python去循环获取:
实现:
通过urlopen方法下载html页面,并用正则表达式在html中抓取5位数字,然后循环get新的url,直到html没有“数字是xxxxx”等字符串,最后打印出成功闯关的html页面文件。
import urllib.request
import re
tmp_re = urllib.request.urlopen('http://www.heibanke.com/lesson/crawler_ex00/')
html = tmp_re.read()
#寻找字符串为"输入数字xxxxx"的字符串中的xxxxx,index得到五位数的数字
index=re.findall(r'输入数字([0-9]{5})',html.decode('utf-8'))
while index:
url ='http://www.heibanke.com/lesson/crawler_ex00/%s/' % index[0]
print(url)
tmp_re = urllib.request.urlopen(url)
html = tmp_re.read().decode('utf-8')
index = re.findall(r'数字是([0-9]{5})',html)
print(html)