Python網(wǎng)絡(luò)爬蟲(1)--爬取中國大學(xué)排名

2017年袄膏, 編程界最火的的語言莫過于Python默色。 Python語言其實(shí)并不是像Go, Kotlin語言一樣是近些年的創(chuàng)造的谎势, 它其實(shí)比Java語言的歷史略久, 只不過它或許不符合我們社會(huì)主義的國情虐沥, 在國內(nèi)一直不被廣泛應(yīng)用熊经。 就這近兩年, 突然之間欲险, 名不見經(jīng)傳的Python語言在國內(nèi)一夜走紅奈搜, 無論是專業(yè)的Python程序員還是諸如Java, C++等語言的程序員都再次將目光投向Python盯荤, 2018年元旦期間, 微信跳一跳小游戲一經(jīng)發(fā)布焕盟, 潛伏在深圳高新園的某大牛隨即就在github上發(fā)布了用Python語言寫的外掛程序秋秤,這一下各路Python大牛又陸續(xù)補(bǔ)充了該外掛的iOS等版本, 玩游戲開外掛不應(yīng)該提倡脚翘,應(yīng)該予以鄙視... 當(dāng)然灼卢, 用程序玩游戲的確不會(huì)帶來任何快感, 可是寫這個(gè)程序的過程是很快樂的呀来农! 這又從另一面讓我們認(rèn)識(shí)了強(qiáng)大的Python---深能進(jìn)行機(jī)器學(xué)習(xí)鞋真,大數(shù)據(jù)分析, 網(wǎng)絡(luò)爬蟲沃于, 淺也能實(shí)現(xiàn)游戲外掛涩咖, 搶12306火車票, 給人的感覺就是Python已經(jīng)無所不能了繁莹。Python潮流檩互, 浩浩蕩蕩, 順之者昌咨演,逆之者亡闸昨, 我當(dāng)然也要跟著時(shí)代潮流呀, 我去年11月開始學(xué)習(xí)Python了薄风, Python語法比Java饵较, C, C++更加靈活簡單遭赂, 今天嘗試了一下使用Python爬蟲的功能循诉。

一.要爬取的是最好大學(xué)網(wǎng)的中國大學(xué)排名

最好大學(xué)網(wǎng)的URL是:
http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2017.html
如圖:

Screenshot from 2018-01-13 19-11-11.png

查看源碼中我們要爬取的關(guān)鍵信息:
Screenshot from 2018-01-13 19-14-54.png

二.使用requests庫獲取HTML文本

定義獲取HTML文本的函數(shù)

def get_html_text(url):
    """
    獲取url對(duì)應(yīng)的html文本
    :param url:
    :return: html文本
    """
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

三.用BeautifulSoup4上面獲取的文本進(jìn)行解析

BeautifulSoup4的文檔非常友好, 解析HTML非常簡單嵌牺。
定義解析函數(shù):

def parse_html(html):
    """
    解析html文件
    :param html:
    :return: 大學(xué)排名列表打洼,['1', '清華大學(xué)', '北京']
    """
    u_list = []
    soup = BeautifulSoup(html, 'html.parser')
    tbody = soup.find('tbody')
    for tr in tbody:
        if isinstance(tr, bs4.element.Tag):
            td_list = list(tr)
            u_list.append([td_list[0].string, td_list[1].string, td_list[2].string])
    return u_list

解析后的形式:
[ ['1', '清華大學(xué)', '北京'], ['2', '北京大學(xué)', '北京'],
['3', '中國科學(xué)院大學(xué)', '北京'], ['4', '中國科學(xué)技術(shù)大學(xué)', '安徽'],
['5', '復(fù)旦大學(xué)', '上海'], ['6', '中國人民大學(xué)', '北京'],
['7', '上海交通大學(xué)', '上海'], ['8', '浙江大學(xué)', '浙江'], ... ]

四.將解析后的內(nèi)容按照一定格式寫到文件中

def save_to_file(univ_list):
    """
    將提取的數(shù)據(jù)保存到文件
    :param univ_list:
    :return:
    """
    with open('university.txt', 'w') as f:
        for item in univ_list:
            s = '{0:>4} \t {1:<3} \t {2:<4}'.format(str(item[0]), str(item[2]), str(item[1]))
            print(s, file=f)
    f.close()

全部代碼:

import requests
from bs4 import BeautifulSoup
import bs4


def get_html_text(url):
    """
    獲取url對(duì)應(yīng)的html文本
    :param url:
    :return: html文本
    """
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


def parse_html(html):
    """
    解析html文件
    :param html:
    :return: 大學(xué)排名列表龄糊,['1', '清華大學(xué)', '北京']
    """
    u_list = []
    soup = BeautifulSoup(html, 'html.parser')
    tbody = soup.find('tbody')
    for tr in tbody:
        if isinstance(tr, bs4.element.Tag):
            td_list = list(tr)
            u_list.append([td_list[0].string, td_list[1].string, td_list[2].string])
    return u_list


def save_to_file(univ_list):
    """
    將提取的數(shù)據(jù)保存到文件
    :param univ_list:
    :return:
    """
    with open('university.txt', 'w') as f:
        for item in univ_list:
            s = '{0:>4} \t {1:<3} \t {2:<4}'.format(str(item[0]), str(item[2]), str(item[1]))
            print(s, file=f)
    f.close()


if __name__ == '__main__':
    url = "http://www.zuihaodaxue.com/shengyuanzhiliangpaiming2017.html"
    html_text = get_html_text(url)
    univ_list = parse_html(html_text)
    save_to_file(univ_list)

寫入文件后的結(jié)果:

   1     北京      清華大學(xué)
   2     北京      北京大學(xué)
   3     北京      中國科學(xué)院大學(xué)
   4     安徽      中國科學(xué)技術(shù)大學(xué)
   5     上海      復(fù)旦大學(xué)
   6     北京      中國人民大學(xué)
   7     上海      上海交通大學(xué)
   8     浙江      浙江大學(xué)
   9     江蘇      南京大學(xué)
  10     天津      南開大學(xué)
  11     上海      同濟(jì)大學(xué)
  12     北京      北京航空航天大學(xué)
  13     北京      對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)
  13     上海      上海財(cái)經(jīng)大學(xué)
  15     北京      中央財(cái)經(jīng)大學(xué)
  16     北京      外交學(xué)院
  17     天津      天津大學(xué)
  18     湖北      武漢大學(xué)
  18     北京      北京師范大學(xué)
  20     北京      北京外國語大學(xué)
  此處省去980行...

用Python語言進(jìn)行網(wǎng)絡(luò)爬蟲的操作過程并不復(fù)雜, 當(dāng)然了募疮, 本文所寫的只是一次簡單的小嘗試炫惩, 復(fù)雜的還待繼續(xù)探究。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阿浓,一起剝皮案震驚了整個(gè)濱河市他嚷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芭毙,老刑警劉巖筋蓖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異退敦,居然都是意外死亡粘咖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門侈百,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓮下,“玉大人,你說我怎么就攤上這事钝域》砘担” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵例证,是天一觀的道長路呜。 經(jīng)常有香客問我,道長织咧,這世上最難降的妖魔是什么胀葱? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮笙蒙,結(jié)果婚禮上巡社,老公的妹妹穿的比我還像新娘。我一直安慰自己手趣,他們只是感情好晌该,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绿渣,像睡著了一般朝群。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上中符,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天姜胖,我揣著相機(jī)與錄音,去河邊找鬼淀散。 笑死右莱,一個(gè)胖子當(dāng)著我的面吹牛蚜锨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慢蜓,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼亚再,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晨抡?” 一聲冷哼從身側(cè)響起氛悬,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耘柱,沒想到半個(gè)月后如捅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡调煎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年镜遣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片士袄。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烈涮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窖剑,到底是詐尸還是另有隱情,我是刑警寧澤戈稿,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布西土,位于F島的核電站,受9級(jí)特大地震影響鞍盗,放射性物質(zhì)發(fā)生泄漏需了。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一般甲、第九天 我趴在偏房一處隱蔽的房頂上張望肋乍。 院中可真熱鬧,春花似錦敷存、人聲如沸墓造。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽觅闽。三九已至,卻和暖如春涮俄,著一層夾襖步出監(jiān)牢的瞬間蛉拙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工彻亲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孕锄,地道東北人吮廉。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像畸肆,于是被迫代替她去往敵國和親宦芦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Python 資源大全中文版 awesome-python[https://github.com/vinta/aw...
    萬色星辰閱讀 9,774評(píng)論 0 255
  • GitHub 上有一個(gè) Awesome - XXX 系列的資源整理,資源非常豐富恼除,涉及面非常廣踪旷。awesome-p...
    若與閱讀 18,662評(píng)論 4 418
  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡單的交互式python版本管理工具豁辉。pyenv–簡單的Pyth...
    MrHamster閱讀 3,797評(píng)論 1 61
  • 一身市井裝令野,不登和畫廊。 啼笑當(dāng)今世徽级,墨少文無章气破。 今見后主詞,仿若入南唐餐抢。 平仄幾蒼茫现使,字字繪凄涼。 江山迭更愴...
    四酒閱讀 176評(píng)論 0 1
  • 使用以下命令會(huì)報(bào)錯(cuò) sudo iptables -I INPUT 1 --dport 80 -j ACCEPT 報(bào)...
    老虎Alex閱讀 2,229評(píng)論 0 0