zoukankan      html  css  js  c++  java
  • 【Python爬虫】从html里爬取中国大学排名

    from bs4 import BeautifulSoup
    import requests
    import bs4 #bs4.element.Tag时用的上
    #获取网页页面HTML
    def getHTMLText(url):
    try:
    r = requests.request("get", url,timeout=30)
    r.raise_for_status() #如不是200报错
    r.encoding = r.apparent_encoding #猜测编码然后赋予给解码 编码模式
    demo = r.text
    soup = BeautifulSoup(demo, "html.parser") #做汤
    return soup
    except:
    return ""
    #分析并返回列表
    def fillUnivList(ulist,html):
    soup = html
    for tr in soup.find("tbody").children: #从汤里找tbody标签的儿子遍历
    if isinstance(tr,bs4.element.Tag): #如果标签是标签名字
    tds = tr("td") #寻找tr里所有td列表,然后赋予tds
    ulist.append([tds[0].string,tds[1].string,tds[3].string]) #加入013号
    pass #???
    #打印表格
    def printUnivList(ulist,num):
    tplt = "{0:^10} {1:{3}^8} {2:^10}" #模板
    print(tplt.format("排名","学校名称","总分",chr(12288))) #3号中文空格
    for i in range(num):
    u = ulist[i] #列表中的0是一个拥有三个元素的列表
    print(tplt.format(u[0], u[1], u[2],chr(12288))) #拥有三个元素的列表按模板打印

    print("Suc" + str(num))
    #主函数
    def main():
    uinfo = [] #创建一个列表
    url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html"
    html = getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20) #打印20个大学

    main()

  • 相关阅读:
    零散的学习总结
    JSON学习整理
    轮播图
    关于new Object的小结
    js函数声明和函数表达式的区别
    float小结
    DOM文档加载步骤
    css主要的浏览器兼容性问题
    js for循环小记
    CANVAS中的lineWidth小计
  • 原文地址:https://www.cnblogs.com/naraka/p/8998107.html
Copyright © 2011-2022 走看看