python最好大学排名前20

中国大学慕课中嵩老师《python网络爬虫与信息提取》国家精品课程中使用BeautifulSou库与requests库爬取最好大学网大学2016年排名实战章节的课程(最新对应连接)
最大变化为现在的网页中大学校名嵌入在第二个td标签中a标签中,另外提取的字符串包含换行符和大量空格。

import requests
import bs4
from bs4 import BeautifulSoup


def getHTML(url):
    try:
        r = requests.get(url, timeout = 30)#可以加入伪装
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


def jieHTML(ulist, html):
    soup = BeautifulSoup(html, "html.parser")
    for tr in soup.find("tbody").children:
        m = tr.find('a').string# 校名单独处理,在每个tr标签下第二个td标签中,有且唯一存在一个a标签。
        if isinstance(tr, bs4.element.Tag):
            tds = tr.find_all('td')
            ulist.append([tds[0].string.strip(), m, tds[4].string.strip()])
            # 通过使用.strip()去除提取到的字符串当中的换行符与空格
            # 这里得到的ulist列表为二维表格。


def printHTML(ulist, num):
    print("{0:^10}\t{1:^10}\t{2:^10}".format("排名", "学校名称", "总分"))
    for i in range(num):
        u = ulist[i]
        print("{0:^10}\t{1:^10}\t{2:^10}".format(u[0], u[1], u[2]))


if __name__ == '__main__':
    url = 'https://www.shanghairanking.cn/rankings/bcur/201611'
    ulist = []
    html = getHTML(url)
    jieHTML(ulist, html)
    printHTML(ulist, 20)

不足:受当前网页限制和本人能力不足,只能提取到前30排名数据。其余部分需要进行js分析获取真正的链接,进而进行爬取。
欢迎大神指点。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值