(01)最簡單的爬數(shù)據(jù)

  • 請(qǐng)求:導(dǎo)入import requests
  • r=requests.get('中間是網(wǎng)址') 再提取 html=r.content
  • 解析:導(dǎo)入package(包)
  • from bs4 import BeautifulSoup 然后創(chuàng)建一BeautifulSoup對(duì)象:soup = BeautifulSoup(html,'html.parser') #html.parser是解析器a_s = div_people_list.find_all('a', attrs={'target': '_blank'}); 使用BeautifulSoup對(duì)象的find方法

div_people_list = soup.find('div', attrs={'class': 'people_list'})
這里我們使用了BeautifulSoup對(duì)象的find方法。這個(gè)方法的意思是找到帶有‘div’這個(gè)標(biāo)簽并且參數(shù)包含" class = 'people_list' "的HTML代碼。如果有多個(gè)的話,find方法就取第一個(gè)。那么如果有多個(gè)呢?正好我們后面就遇到了,現(xiàn)在我們要取出所有的“a”標(biāo)簽里面的內(nèi)容:

a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
這里我們使用find_all方法取出所有標(biāo)簽為“a”并且參數(shù)包含“ target = ‘_blank‘ ”的代碼,返回一個(gè)列表。“a”標(biāo)簽里面的“href”參數(shù)是我們需要的老師個(gè)人主頁的信息,而標(biāo)簽里面的文字是老師的姓名。我們繼續(xù):
這里我們使用BeautifulSoup支持的方法,使用類似于Python字典索引的方式把“a”標(biāo)簽里面“href”參數(shù)的值提取出來,賦值給url(Python實(shí)際上是對(duì)對(duì)象的引用),用get_text()方法把標(biāo)簽里面的文字提起出來。

1、請(qǐng)求
這里我們使用的package是requests。這是一個(gè)第三方模塊(具體怎么下載以后再說),對(duì)HTTP協(xié)議進(jìn)行了高度封裝,非常好用。所謂HTTP協(xié)議,簡單地說就是一個(gè)請(qǐng)求過程。我們先不管這玩意是啥,以后再討論。這個(gè)部分,我們要實(shí)現(xiàn)的目的是把網(wǎng)頁請(qǐng)求(或者說下載)下來。
首先我們導(dǎo)入requests

import requests
下面調(diào)用requests
的get函數(shù),把網(wǎng)頁請(qǐng)求下來:
r = requests.get('http://www.wise.xmu.edu.cn/people/faculty')

返回的“r”的是一個(gè)包含了整個(gè)HTTP協(xié)議需要的各種各樣的東西的對(duì)象。我們先不管都有啥,先把我們需要的網(wǎng)頁提取出來:
html = r.content
好了,到這一步我們已經(jīng)獲取了網(wǎng)頁的源代碼。具體源代碼是什么樣的呢?右鍵,點(diǎn)擊“查看源文件”或者“查看源”就可以看到:
view-source:http://www.wise.xmu.edu.cn/people/faculty

2、解析
當(dāng)然從這一大坨代碼里面找信息太麻煩了。我們可以用瀏覽器提供的另外一個(gè)工具:審查元素。這里我們先不講怎么使用審查元素,先從源代碼里面找。找到的我們需要的信息如下:


這里我們使用bs4來解析。bs4是一個(gè)非常好的解析網(wǎng)頁的庫,后面我們會(huì)詳細(xì)介紹。這次的解析先給大家看bs4里面最常用的幾個(gè)BeautifulSoup對(duì)象的方法(method)。我們使用的這幾個(gè)方法,主要是通過HTML的標(biāo)簽和標(biāo)簽里面的參數(shù)來定位,然后用特定方法(method)提取數(shù)據(jù)。
首先還是導(dǎo)入package:
from bs4 import BeautifulSoup
然后創(chuàng)建一個(gè)BeautifulSoup對(duì)象:
soup = BeautifulSoup(html,'html.parser') #html.parser是解析器
下面我們根據(jù)我們看到的網(wǎng)頁提取。首先提取我復(fù)制的這部分的代碼的第一行,先定位到這部分代碼:
div_people_list = soup.find('div', attrs={'class': 'people_list'})
這里我們使用了BeautifulSoup對(duì)象的find方法。這個(gè)方法的意思是找到帶有‘div’這個(gè)標(biāo)簽并且參數(shù)包含" class = 'people_list'
"的HTML代碼。如果有多個(gè)的話,find方法就取第一個(gè)。那么如果有多個(gè)呢?正好我們后面就遇到了,現(xiàn)在我們要取出所有的“a”標(biāo)簽里面的內(nèi)容:
a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
這里我們使用find_all
方法取出所有標(biāo)簽為“a”并且參數(shù)包含“ target = ‘_blank‘
”的代碼,返回一個(gè)列表。“a”標(biāo)簽里面的“href”參數(shù)是我們需要的老師個(gè)人主頁的信息,而標(biāo)簽里面的文字是老師的姓名。我們繼續(xù):
for a in a_s:

url = a['href']

name = a.get_text()

這里我們使用BeautifulSoup支持的方法,使用類似于Python字典索引的方式把“a”標(biāo)簽里面“href”參數(shù)的值提取出來,賦值給url(Python實(shí)際上是對(duì)對(duì)象的引用),用get_text()
方法把標(biāo)簽里面的文字提起出來。
事實(shí)上,使用這四個(gè)方法就可以正常地解析大部分HTML了。不過如果只用這四個(gè)方法,很多程序會(huì)寫的異常原始。所以我們后面再繼續(xù)介紹更多解析方法。
儲(chǔ)存

這里我們先弱化一下具體的儲(chǔ)存方法,先輸出到控制臺(tái)上面。我們?cè)趧偛诺拇a的基礎(chǔ)上加一行代碼:
for a in a_s:

url = a['href']

name = a.get_text()

print name,url

使用print關(guān)鍵詞把得到的數(shù)據(jù)print出來。讓我們看看結(jié)果:


好的,到這里一個(gè)原型就完成了。這就是一個(gè)非常簡單的爬蟲,總代碼不過十幾行。復(fù)雜到幾百幾千行的爬蟲,都是在這樣的一個(gè)原型的基礎(chǔ)上不斷深化、不斷完善得到的。

from bs4 import BeautifulSoup
import requests
r = requests.get('http://www.wise.xmu.edu.cn/people/faculty')
html = r.content

view-source:http://www.wise.xmu.edu.cn/people/faculty

soup = BeautifulSoup(html,'html.parser') #html.parser是解析器
div_people_list = soup.find('div', attrs={'class': 'people_list'})
a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
for a in a_s:
url = a['href']
name = a.get_text()

for a in a_s:
    url = a['href']
    name = a.get_text()
    print (name,url)

原網(wǎng)頁http://www.100weidu.com/weixin/CMy033CKgj

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容