呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

黑板客爬虫闯关 代码

简介

原网址黑板客爬虫闯关

提供给网友的一个学习爬虫的网站,关卡设计由易到难,到后面逐渐涉及模拟登陆,多线程等,让你掌握网络爬虫的基本技术。

第一关:

简单的在网址后面输入数字就可以,只不过你需要N++++个数字才能到达第二关的入口,每次跳转页面里都有下一个页面的跳转数字。所以这里需要用爬虫爬取出每个页面的跳转数字,直到没有跳转数字为止就是第二关的入口了。

代码:

 1 #coding=gbk
 2 import re
 3 import urllib2
 4 
 5 rooturl = 'http://www.heibanke.com/lesson/crawler_ex00/'
 6 url = rooturl
 7 
 8 while True:
 9     request = urllib2.Request(url)
10     response = urllib2.urlopen(request,timeout=30)
11 
12     html = response.read().decode('utf8')
13 
14     items = re.findall(r'<h3>.*?(\d+).*?</h3>',html)
15 
16     if len(items)==0:
17         break
18     else:
19         num = items[0]
20         url = rooturl + num
21 
22     print 'go:'
23     print url
24 
25 print 'answer:%s'%url

第二关:

使用爬虫模拟post请求穷举密码即可。

代码:

 1 #coding=gbk
 2 import re
 3 import urllib
 4 import urllib2
 5 
 6 rooturl = 'http://www.heibanke.com/lesson/crawler_ex01/'
 7 url = rooturl
 8 
 9 for pwd in range(0,31):
10         data = {}
11         data['username'] = 'yym'
12         data['password'] = pwd
13         print '尝试%d'%pwd
14 
15         post_data = urllib.urlencode(data)
16         #print post_data
17 
18         request = urllib2.Request(url)
19         response = urllib2.urlopen(request,post_data,timeout=30)
20 
21         html = response.read().decode('utf8')
22         if  html.find('密码错误'.decode('gbk')) == -1:
23                 print '密码正确'
24                 print 'answer:%d'%pwd
25                 break
26         else:
27                 print '密码错误'
28 if pwd==30:
29         print '没找到密码'

 

 

Freecode# : www.cnblogs.com/yym2013

##原创声明 **转载请注明:[呓语](http://www.yangyingming.com) » [黑板客爬虫闯关 代码](http://www.yangyingming.com/article/15)**