【python实例】爬取中国前20强大学

注释了一些在学习过程中对这个实例里一些语句作用的理解:

import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):#用于获取html文本
  try:
      r = requests.get(url,timeout = 30)
      r.raise_for_status()#遇到错误时会返回错误类型
      r.encoding = r.apparent_encoding
      return r.text
  except:
      return ""

def fillUnivList(ulist,html):#分析整理提取出的信息
  soup = BeautifulSoup(html,'html.parser')
  for tr in soup.find('tbody').children:#遍历所有tr标签
      if isinstance(tr,bs4.element.Tag):
          #如果tr是bs4.element.Tag类,则执行下列代码
          tds = tr('td')  # 生成tds列表
          ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
          #append会把一个且只能是一个数据以元素的形式添加进列表(append是常用方法)

def printUnivList(ulist,num):#把信息以表的形式格式化输出
  tplt = '{0:^6}\t{1:{4}^8}\t{2:{4}^8}\t{3:^4}'
  #<表示左对齐,>表示右对齐,^表示居中,\t表示填充4个字符长
  print(tplt.format("排名","学校名称","所在省份","总分"," "))
  #常用.format()进行格式化输出,此处为输出表头
  for i in range(num):#range(num)表示从0到num-1
      u = ulist[i]
      print(tplt.format(u[0],u[1],u[2],u[3],chr(12288)))#chr(12288)是全角的空格
  print("Suc" + str(num))

def main():
  uinfo = []
  url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
  html = getHTMLText(url)
  fillUnivList(uinfo,html)
  printUnivList(uinfo,20)

main()

你可能感兴趣的:(实例练习)