python爬取最好大学排名

做爬虫首先先分析网页找到自己需要的数据标签,再根据标签进行爬取数据
下面是我们要爬取的网页的链接
http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html

  1. 分析网页
    在这里插入图片描述

  2. 代码获取网页代码

    import requests  #没有此库的pip安装
    page = requests.get("http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html")
    #将编码同一
    page.encoding = page.apparent_encoding
    page.text
    这样就获取到了网页的源代码
    
  3. 如何处理数据
    首先导入bs4库中的BeautifulSoup函数 此函数是针对html界面更加美化的显示 并且提供了一些基于html树的搜索方法便于对标签,标签的属性 以及标签的属性值 和标签里面的字符串的获取。

     from bs4 import BeautifulSoup
     soup = BeautifulSoup(page.text,"html.parser")#后面的参数表名是按什么类型的语言来进行美化的
     #测试 下 获取标签对象  soup.tbody  soup.tr
     # 获取td标签的align属性值<td align="left">89</td> soup.td.attrs['align'] 
     # 获取89   soup.td.string
     tbody = soup.tbody  #如果网页中有多个tbody的话考虑更换其他出现率较小的属性进行获取 因为tbody 在我要获取的网页中只有一个
     trs = tbody.find_all('tr')
     ulist=[] #存储需要的数据
     for tr in trs:
     	tds = tr.find_all('td')
     	ulist.append(tds[0].string,td[1].string,td[1].string)
    

完整源代码

"""
爬取最好大学的排名
"""
import requests
from bs4 import BeautifulSoup
import re

#获取网页的源代码
def getHTMLText(html):
    try:
        page = requests.get(html)#获取响应的文本
        page.raise_for_status #异常处理函数
        page.encoding = page.apparent_encoding#转码处理
        return page.text
    except:
        print("爬取失败")
        return None

#获取想要的信息并存储到列表中
def getTableText(text):
    #存储需要的信息
    ulist=[]
    soup = BeautifulSoup(text,"html.parser")
    tbody = soup.tbody#获取tbody的标签因为我要爬取的网页只有一个tbody所以下面我只用tbody来查找
    trs = tbody.find_all('tr')
    for tr in trs:
        tds = tr.find_all('td')
        ulist.append([tds[0].string,tds[1].string,tds[2].string])

    return ulist

#chr(12288)解决了中文的空格个英文的空格大小不一样问题从而实现了文字的对齐
def printSort(ulist,num):
    tplit = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tplit.format("排名","学校名字","市区",chr(12288)))
    for i in range(num):
        td=ulist[i]
        print(tplit.format(td[0],td[1],td[2],chr(12288)))


if __name__=="__main__":
    ulist=[]#设置空列表以接收数据
    url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
    text = getHTMLText(url)
    if text is not None:
        ulist = getTableText(text)
        printSort(ulist,20)

结果展示
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值