通过黑板课爬虫游戏复习爬虫知识(第二关)
第二关地址:
http://www.heibanke.com/lesson/crawler_ex01/
不难发现,其实他们关卡的url也是有规律的……
第二关相较于第一关,主要是在考察表单的提交
很尴尬的是 我测试的时候第一个数字就成功了……
所以代码采用的是‘!=’恭喜’’的状态
我的思路就是提交表单后读取文本,进行判断,一旦不符合条件,就继续执行,直到成功,输出的话考虑了直接返回url(get获取的那个)和返回密码数字
import requests
from lxml import etree
def second():
url='http://www.heibanke.com/lesson/crawler_ex01/'
point=''
num=0
while point!='恭喜':
gurl = etree.HTML(requests.post(url,data={'username':'1','password':num}).text)
get = gurl.xpath("//div[@class='col-xs-12 col-sm-10 col-md-8 col-lg-6']//h3")[0].text
point=get[:2]
num=num+1
#get = gurl.xpath("//a/@href")[0]
#print(get)
print(num-1)
second()
但如果在未知结果的情况下,可以修改为
import requests
from lxml import etree
def second():
url='http://www.heibanke.com/lesson/crawler_ex01/'
num=0
while num<30:
gurl = etree.HTML(requests.post(url,data={'username':'1','password':num}).text)
get = gurl.xpath("//div[@class='col-xs-12 col-sm-10 col-md-8 col-lg-6']//h3")[0].text
if get!='您输入的密码错误, 请重新输入':
break
num=num+1
get = gurl.xpath("//a/@href")[0]
print(get)
print(num)
second()
当然 有个小bug password输入非数字的时候会提示:
密码只有数字哦