【Python】第一个爬虫和测试

一、羽毛球体育竞技测试

利用try···except进行异常处理(此外还可以利用doctest库进行测试,doctest.testmod()

def gameover(setA,setB):
    if setA==20 or setB==20:
        return True
    else:
        return False
try:
    a=gameover(18,25)
    print(a)
except:
    print("Error")

 调试结果如下:

二、python网络爬虫(requests库)

requests库解析:

(1)七个常用方法

  • requests.request():构造一个请求
  • requests.get():获取网页
  • requests.head():获取网页头信息
  • requests.post():向网页提交post方法
  • requests.put():向网页提交put方法
  • requests.patch():向网页提交局部修改请求
  • requests.delete():向网页提交删除请求

 (2)五个常用的网页requests属性

  • status_code:200表示成功
  • text:http响应内容的字符串形式
  • encoding:从http header中猜测的响应内容编码方式
  • apparent_encoding:从内容解析出的响应内容编码方式(备选编码方式)
  • r.content:响应内容的二进制形式

爬360浏览器主页

# -*- coding: utf-8 -*-
"""
Created on Mon May 20 11:13:38 2019

@author: yyp
"""

import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding='utf-8'
        return r.text
    except:
        return ""
url="http://browser.360.cn"
print(getHTMLText(url))

  结果如下:

三、中国大学排名爬虫

# -*- coding: utf-8 -*-
"""
Created on Thu May 23 14:33:45 2019

@author: yyp
"""
import requests
from bs4 import BeautifulSoup
allUniv=[]#储存全部表格数据,二维数组
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=20)
        r.raise_for_status()
        r.encoding='utf-8'
        return r.text
    except:
        return""
def fillUnivList(soup):
    data=soup.find_all('tr')#找到所有tr标签
    for tr in data:   #循环tr
        ltd=tr.find_all('td') #在每个tr标签中找到所有的td标签
        if len(ltd)==0:
            continue
        singleUniv=[]  #生成一维数组
        for td in ltd:
            singleUniv.append(td.string)#提取td标签中的信息
        allUniv.append(singleUniv)
def printUnivList(num):
    print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分"
          ,"培养规模"))
     
    for i in range(num):
        u=allUniv[i]
        print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6]))
def main(num):
    url='http://www.zuihaodaxue.cn/
       zuihaodaxuepaiming2018.html'
    html=getHTMLText(url)
    soup=BeautifulSoup(html,"html.paraer")
    fillUnivList(soup)
    printUnivList(num)
main()

  

原文地址:https://www.cnblogs.com/yyp-20190107/p/10910852.html