第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Python爬蟲 | 基于request-bs4的中國(guó)大學(xué)排名定向爬蟲

標(biāo)簽:
Python 爬蟲

Python爬虫


Python版本:Python3.5 ;
技术路线:requests-bs4 。

功能描述:

俗话说“有人的地方就有江湖”,那么有大学的地方就有排名。2018年大学排名是怎样的呢?最好大学网上提供了2018年的中国大学排名榜。

我们要一个程序,它能够通过链接爬取大学排名,并将大学排名信息屏幕输出。所以,功能需求如下:

  • 输入:大学排名URL链接
  • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)

可行性分析:

首先,我们要确定需要的信息是不是写在HTML页面的代码中。如果是通过JavaScript等脚本语言生成的,用requests和BeautifulSoup库是无法获取它的信息的。其次,还有网站robots协议里是否有相关约定。

  • 代码写是否写在了HTML页面
  • robots协议

1.打开浏览器,输入我们要访问的网站,我们看到有中国大学排名的页面信息。

最好大学网
2.点击右键,查看源代码。可以看到每个大学相关信息对应的代码部分,这块代码是通过,并将其存储在列表tds中
ulist.append([tds[0].string, tds[1].string, tds[2].string])
# 增加对应字段到列表ulist


 - 第三个函数 `printUnivList(ulist, num)` ,使用 **format()方法** 格式化输出。这里要啰嗦一句:使用format()方法输出时,定义了槽的大小且输出内容包含中文字符,当中文字符不够槽的宽带时,将默认西文字符填充,但是中文和西文字符对空间的占用又不一样...
   - 这意味着什么呢?意味着我们输出的格式很难对齐,灰常不美观...
   - 所以我们要用中文空格符填充~
   - utf-8编码对应中文空格字符为:12288,so,填充的字符就是chr(12288)啦~
``` python
def printUnivList(ulist, num):
    tplt = "{0:^10}\t{1:{3}^12}\t{2:^10}"
    print(tplt.format("排名", "学校名称", "总分", chr(12288)))
    # 先打印表头
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0], u[1], u[2], chr(12288)))
        # 打印每一所学校的信息
  • 至此,所有的代码都写完啦,我们已经成功写完了定向爬虫了,好激动有木有?赶紧运行一下程序试试看哟~

程序运行效果


最终代码:

# 实践:中国大学排名定向爬取
import requests
from bs4 import BeautifulSoup
import bs4


def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except requests.HTTPError:
        return ""


def fillUnivList(ulist, html):
    soup = BeautifulSoup(html, "html.parser")
    for tr in soup.find("tbody").children:
        if isinstance(tr, bs4.element.Tag):
            tds = tr("td")
            ulist.append([tds[0].string, tds[1].string, tds[2].string])


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


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



1.本帖仅作为学习笔记;
2.有错误之处欢迎指出;
3.也欢迎大家一起学习交流~(๑•̀㉨•́ฅ✧)

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消