第一个爬虫及测试

球赛程序测试:

首先输入输出函数一般没问题,所以就不测试了。

1、simOneGame一局比赛函数:

因为这个函数中包含了gameover函数,所以先去测试一下gameover函数:

def gameOver(x,c, d):
    if x!=5:
        if c>=25 and d>=25:
            if c-d>2 or d-c>2:
                return 1
    else:
        if c>=15 and d>=15:
            if c-d>2 or d-c>2:
                return 1

这时调用一下函数,赋特殊值试一下:

def gameOver(x,c, d):
    if x!=5:
        if c>=25 and d>=25:
            if c-d>2 or d-c>2:
                return 1
    else:
        if c>=15 and d>=15:
            if c-d>2 or d-c>2:
                return 1
if gameOvre(1,25,25):
    print('错误')
if gameOver(1,25,28):
    print('正确')
if gameOvre(5,15,15):
    print('错误')
if gameOver(1,15,18):
    print('正确')

运行后结果都正确

接着测试一局比赛的函数:

def simOneGame(x,probA, probB):    # 进行一场比赛
    a=x
    scoreA, scoreB = 0, 0   # 初始化AB的得分
    serving = 'A'         # 首先由A发球
    while not gameOver(a,scoreA, scoreB):  #用while循环来执行比赛
        if serving == 'A':
            if random() < probA:   # random() 方法返回随机生成的一个实数,它在[0,1)范围内。
                scoreA += 1     # 用随机数来和能力值比较从而分出胜负
            else:
                serving = 'B'
        else:
            if random() < probB:
                scoreB += 1
            else:
                serving = 'A'
    return scoreA, scoreB

这里要测试可以加入一个print语句,输出结果看看

从这些数据可以看出,没问题。

2、测试wuju函数:

这个是一次比赛五局三胜的函数:

def wuju(probA,probB):
    A,B=0,0
    for i in range(4):
        scoreA,scoreB=simOneGame(4,probA,probB)
        print(scoreA,scoreB)
        if scoreA>scoreB:
            A+=1
        else:
            B+=1
    if A>B:
        return 1
    elif B>A:
        return 0
    else:
        scoreA,scoreB=simOneGame(5,probA,probB)
        if scoreA>scoreB:
            return 1
        else:
            return 0

也可以通过赋特殊值测试。

3、simNGames(),多次比赛函数:

def simNGames(n, probA, probB):    #进行N场比赛
    winsA, winsB = 0, 0    # 初始化AB的胜场数
    for i in range(n):
        if wuju(probA,probB):
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB

通过print输出结果看看就知道了。

 我的第一个爬虫:

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import requests
def getht(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding='utf-8'
        return r.text
    except:
        return '错误'
def main():
    url="http://baidu.com"
    print(getht(url))
main()

第一个爬虫爬百度没什么问题:

运行结果就是这样,

但一旦要爬谷歌的主页,就出现了问题,运行结果为错误。我猜测是墙的问题

所以我爬了一个转谷歌的网站,www.google.cn。结果如下:

这是一次的结果,让我们爬取20次试试:

这个网站我们可以爬取20次没什么问题,可以看出这个网站的粗糙。和google不能比。

使用len()函数就可以轻松计算text的长度:

 print("r.text的长度是:{}".format(len(getht(url))))

结果:

猜你喜欢

转载自www.cnblogs.com/0330lgs/p/10905040.html