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

首頁(yè) 慕課教程 Python 原生爬蟲教程 Python 原生爬蟲教程 08 最簡(jiǎn)單的爬蟲案例開發(fā)

最簡(jiǎn)單的爬蟲案例開發(fā)

前面的學(xué)習(xí)中我們已經(jīng)簡(jiǎn)單了解了一些爬蟲所需的知識(shí),這節(jié)課我們就來(lái)做一個(gè)小爬蟲來(lái)實(shí)踐下我們前面所學(xué)習(xí)的知識(shí),這節(jié)課我們會(huì)爬取慕課網(wǎng)首頁(yè)所有的課程名稱:

1. 爬取慕課網(wǎng)首頁(yè)所有課程名稱

我們第一個(gè)爬蟲程序,是來(lái)爬取慕課網(wǎng)的首頁(yè)的所有課程信息的名字。下面的代碼鎖使用到的技術(shù)有的我們并沒有涉及到,后面的學(xué)習(xí)中我們會(huì)一一講解。這里只是讓大家對(duì)爬蟲程序有個(gè)大概的了解,熟悉最基本的爬蟲流程,以及對(duì)爬蟲處理有一個(gè)粗略的印象,同時(shí),也是激發(fā)大家學(xué)習(xí)的熱情,讓大家對(duì)爬蟲不僅停留在理論上,也可以實(shí)際操作去加深印象。

1.1 建立 imoocSpider.py 文件

爬蟲文件的命名一定要準(zhǔn)確,爬蟲爬取的是哪一個(gè)網(wǎng)站就用哪一個(gè)網(wǎng)站來(lái)進(jìn)行命名,這樣以后我們寫的爬蟲越來(lái)越多會(huì)方便管理。

文件創(chuàng)建好之后首先導(dǎo)入 requests 第三方庫(kù)和頁(yè)面解析工具 BeautifulSoup:

import requests   # requests庫(kù),用來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求

from bs4 import BeautifulSoup   # 一個(gè)解析庫(kù),用來(lái)解析網(wǎng)頁(yè)結(jié)構(gòu)

Tips:BeautifulSoup 我們?cè)诤竺鏁?huì)講到,這里只是先用一下。

1.2 定義網(wǎng)址變量

定義網(wǎng)址變量 url,url 中存儲(chǔ)的是我們要爬取的網(wǎng)站,這個(gè)小爬蟲中我們要爬取的網(wǎng)站是:http://idcbgp.cn

url = "http://idcbgp.cn" #慕課網(wǎng)首頁(yè)地址

1.3 創(chuàng)建請(qǐng)求頭部

創(chuàng)建請(qǐng)求頭部,因?yàn)榉?wù)器會(huì)分辨請(qǐng)求的是瀏覽器或者是爬蟲,如果是爬蟲的話會(huì)直接斷開請(qǐng)求,導(dǎo)致請(qǐng)求失敗。為了不讓我們的爬蟲暴露,所以要給它加上一層偽裝,這樣服務(wù)器就會(huì)認(rèn)為是瀏覽器在請(qǐng)求了:

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 請(qǐng)求頭部

1.4 發(fā)起請(qǐng)求

使用 requests 庫(kù)中的 get 方法來(lái)進(jìn)行請(qǐng)求:

r = requests.get(url, headers= headers) # 發(fā)送請(qǐng)求

1.5 解析請(qǐng)求結(jié)果

因?yàn)檎?qǐng)求的結(jié)果是 HTML 格式的,所以我們使用 BeautifulSoup 來(lái)解析我們的請(qǐng)求結(jié)果:

bs = BeautifulSoup(r.text, "html.parser")   # 解析網(wǎng)頁(yè)

在返回的請(qǐng)求結(jié)果中,我們想要的數(shù)據(jù)都是在 h3 標(biāo)簽中包裹著,所以我們使用 BeautifulSoup 查找返回結(jié)果中所有的 h3 標(biāo)簽并剝離,存儲(chǔ)在變量 mooc_classes 中。

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位課程信息

1.6 解析數(shù)據(jù)

將每一個(gè) h3 標(biāo)簽中的課程名稱剝離,并存儲(chǔ)在 class_list 這個(gè)列表中去,最后將課程信息存入到文本文件中:

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("課程名稱 : {} \n".format(title)) #格式化課程信息

with open('mooc_classes.txt', "a+") as f: # 將課程信息寫入文本文件中
    for text in class_list:
        f.write(text)

1.7 最終代碼

下面就是我們這個(gè)小爬蟲的最終代碼:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
import requests   # requests庫(kù),用來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求

from bs4 import BeautifulSoup   # 這是一個(gè)解析庫(kù),用來(lái)解析網(wǎng)頁(yè)

url = "http://idcbgp.cn" #慕課網(wǎng)首頁(yè)地址

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 請(qǐng)求頭部

r = requests.get(url, headers= headers) # 發(fā)送請(qǐng)求

bs = BeautifulSoup(r.text, "html.parser")   # 解析網(wǎng)頁(yè)

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位課程信息

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("課程名稱 : {} \n".format(title)) #格式化課程信息

with open('mooc_classes.txt', "a+") as f: # 將課程信息寫入文本文件中
    for text in class_list:
        f.write(text)
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

上面的程序,就是一個(gè)最簡(jiǎn)單的一個(gè)爬蟲程序。最后,我們格式化輸出的樣式,使得輸出格式為 課程名稱+慕課網(wǎng)課程名稱的樣式,最后把結(jié)果保存到一個(gè) TXT 文件里面。最后我們打開 TXT 文件看一下效果:

如下圖所示:

圖片描述

Tips:一般在正式的爬蟲開發(fā)中我們不會(huì)把數(shù)據(jù)存儲(chǔ)到文件中去,而是會(huì)存儲(chǔ)到數(shù)據(jù)庫(kù)中,這樣才能最大限度的保證數(shù)據(jù)不會(huì)丟失。

2. 小結(jié)

本小節(jié),通過(guò)運(yùn)用 BeautifulSoup 以及 Requests 實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單的爬蟲程序,關(guān)于它們的學(xué)習(xí),我們會(huì)在后面的章節(jié)進(jìn)行詳細(xì)論述。這個(gè)小程序,只是向大家演示一個(gè)最基本的爬蟲的工作流程。細(xì)心的同學(xué)肯定會(huì)發(fā)現(xiàn),我們的代碼量并不是很多,就輕松實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的爬取工作。其實(shí),正式因?yàn)槭褂肞ython 編寫爬蟲程序的簡(jiǎn)單方便,才使得 Python 語(yǔ)言成為了寫爬蟲程序的首選。