創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供肥鄉(xiāng)網(wǎng)站建設(shè)、肥鄉(xiāng)做網(wǎng)站、肥鄉(xiāng)網(wǎng)站設(shè)計(jì)、肥鄉(xiāng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、肥鄉(xiāng)企業(yè)網(wǎng)站模板建站服務(wù),十余年肥鄉(xiāng)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。這篇文章將為大家詳細(xì)講解有關(guān)python寫爬蟲的案例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
所謂網(wǎng)絡(luò)爬蟲,通俗的講,就是通過向我們需要的URL發(fā)出http請(qǐng)求,獲取該URL對(duì)應(yīng)的http報(bào)文主體內(nèi)容,之后提取該報(bào)文主體中我們所需要的信息。
下面是一個(gè)簡單的爬蟲程序
http基本知識(shí)
當(dāng)我們通過瀏覽器訪問指定的URL時(shí),需要遵守http協(xié)議。本節(jié)將介紹一些關(guān)于http的基礎(chǔ)知識(shí)。
http基本流程
我們打開一個(gè)網(wǎng)頁的過程,就是一次http請(qǐng)求的過程。這個(gè)過程中,我們自己的主機(jī)充當(dāng)著客戶機(jī)的作用,而充當(dāng)客戶端的是瀏覽器。我們輸入的URL對(duì)應(yīng)著網(wǎng)絡(luò)中某臺(tái)服務(wù)器上面的資源,服務(wù)器接收到客戶端發(fā)出的http請(qǐng)求之后,會(huì)給客戶端一個(gè)響應(yīng),響應(yīng)的內(nèi)容就是請(qǐng)求的URL對(duì)應(yīng)的內(nèi)容,當(dāng)客戶端接收到服務(wù)器的響應(yīng)時(shí),我們就可以在瀏覽器上看見請(qǐng)求的信息了。
推薦學(xué)習(xí)《python教程》
我們可以通過python的requests模塊很方便的發(fā)起http請(qǐng)求。requests模塊是第三方模塊,安裝完成之后直接import就能使用。下面介紹一些簡單的用法
發(fā)起請(qǐng)求
import requests # 請(qǐng)求的首部信息 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36' } # 例子的url url = 'https://voice.hupu.com/nba' # 虎撲nba新聞 # 利用requests對(duì)象的get方法,對(duì)指定的url發(fā)起請(qǐng)求 # 該方法會(huì)返回一個(gè)Response對(duì)象 res = requests.get(url, headers=headers) # 通過Response對(duì)象的text方法獲取網(wǎng)頁的文本信息 print(res.text)
上面的代碼中,我們向虎撲的服務(wù)器發(fā)送了一個(gè)get請(qǐng)求,獲取虎撲首頁的nba新聞。headers參數(shù)指的是http請(qǐng)求的首部信息,我們請(qǐng)求的url對(duì)應(yīng)的資源是虎撲nba新聞的首頁。獲取到對(duì)應(yīng)的網(wǎng)頁資源之后,我們需要對(duì)其中的信息進(jìn)行提取。
通過BeautifulSoup提取網(wǎng)頁信息
BeautifulSoup庫提供了很多解析html的方法,可以幫助我們很方便地提取我們需要的內(nèi)容。我們這里說的BeautifulSoup指的是bs4。當(dāng)我們成功抓取網(wǎng)頁之后,就可以通過BeautifulSoup對(duì)象對(duì)網(wǎng)頁內(nèi)容進(jìn)行解析。在BeautifulSoup中,我們最常用的方法就是find()方法和find_all()方法,借助于這兩個(gè)方法,可以輕松地獲取到我們需要的標(biāo)簽或者標(biāo)簽組。關(guān)于其他的方法,可以參考bs4的官方文檔:BeautifulSoup
find()方法和find_all()方法的用法如下
find(name , attrs , recursive , string , **kwargs ) # find_all()方法將返回文檔中符合條件的所有tag, find_all(name , attrs , recursive , string , **kwargs )
from bs4 import BeautifulSoup # BeautifulSoup對(duì)象接收html文檔字符串 # lxml是html解析器 soup = Beautiful(res.text, 'lxml') # 下面的方法找出了所有class為hello的span標(biāo)簽 # 并將所有的結(jié)果都放入一個(gè)list返回 tags = soup.find_all('span', {'class': 'hello'})
關(guān)于python寫爬蟲的案例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。