zoukankan      html  css  js  c++  java
  • python爬取大学排名

    来自北理嵩老师的案例,之前嵩老师的网址我没办法访问,新的网址爬虫不成功,所以改了一下。
    import requests
    from bs4 import BeautifulSoup
    import bs4

    #通过URL信息从网页爬取数据
    def getHTMLText(url):
    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):
    new_html = (html.replace('<!---->', '')).replace(' ', '')
    soup = BeautifulSoup(new_html,'html.parser')
    #遍历tbody标签的所有子类型
    for tr in soup.find('tbody').children:
    #检测tr标签的类型,如果tr类型不是bs4库类型,则过滤掉
    if isinstance(tr,bs4.element.Tag):
    tds = tr('td')
    astr = tds[1].find('a')
    #print(tds[0].string)
    #把需要的td内容加到list中
    ulist.append([tds[0].string,astr.string,tds[4].string])

    #格式化输出
    def printUnivList(ulist,num):
    tplt = "{0:^10} {1:{3}^10} {2:^10}"
    #输出表头
    print(tplt.format("排名","学校名称","总分",chr(12288)))
    for i in range(num):
    u = ulist[i]
    print(tplt.format(u[0].strip(),u[1].strip(),u[2].strip(),chr(12288)))
    def main():
    uinfo = []
    #url = 'http://m.gaosan.com/gaokao/265440.html'
    url = 'https://www.shanghairanking.cn/rankings/bcur/2020'
    html = getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20) #20 unive

    main()


  • 相关阅读:
    mybatis-plus 相关
    Nginx 相关
    Docker 相关
    shiro & jwt
    Java GC
    C++ Q&A
    epoll ET & LT
    关于 free 命令显示内存使用情况问题
    Metaprogramming in Ruby: It’s All About the Self
    On The Value Of Fundamentals In Software Development (基础知识在软件开发中的价值)
  • 原文地址:https://www.cnblogs.com/zhouyeqin/p/14514084.html
Copyright © 2011-2022 走看看