2023學(xué)年完整公開課版beautifulsoup_第1頁
2023學(xué)年完整公開課版beautifulsoup_第2頁
2023學(xué)年完整公開課版beautifulsoup_第3頁
2023學(xué)年完整公開課版beautifulsoup_第4頁
2023學(xué)年完整公開課版beautifulsoup_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Beautifulsoup網(wǎng)頁下載利器南師附中

包凌琰百度的疫情實(shí)時(shí)數(shù)據(jù)報(bào)告頁面,其代碼行數(shù)超過600行,僅當(dāng)前頁面的總字符數(shù)已超35萬!1、BS的簡(jiǎn)介與安裝01學(xué)習(xí)目標(biāo)2、BS的常見格式的使用023、用BS提出關(guān)鍵數(shù)據(jù)034、用實(shí)現(xiàn)爬網(wǎng)功能04Part01初識(shí)BSBeautifulSoup簡(jiǎn)介beautifulsoup提供一些簡(jiǎn)單的、python式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能。它是一個(gè)工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫出一個(gè)完整的應(yīng)用程序。簡(jiǎn)單地說:beautfulSoup擅長用來提取xml和HTML中的數(shù)據(jù)。BeautifulSoup安裝BeautifulSoup3目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項(xiàng)目中使用BeautifulSoup4,不過它已經(jīng)被移植到BS4了,也就是說導(dǎo)入時(shí)我們需要importbs4。下面列出pip進(jìn)行安裝方式,當(dāng)然也可以用easy_install等方法,大家可以自行研究。我們的版本是4.9.3。BeautifulSoup支持的解析器解析器是什么呢?BeautifulSoup做的工作就是對(duì)html標(biāo)簽進(jìn)行解釋和分類,不同的解析器對(duì)相同html標(biāo)簽會(huì)做出不同解釋。BeautifulSoup使用的準(zhǔn)備工作我們接下來將通過分析和獲取HTML的內(nèi)容來熟悉beautifulsoup的各項(xiàng)功能。首先,我們準(zhǔn)備一個(gè)html文檔,源代碼如下圖所示。添加標(biāo)題導(dǎo)入BS庫添加標(biāo)題生成BS對(duì)象添加標(biāo)題調(diào)用方法添加標(biāo)題獲得數(shù)據(jù)BeautifulSoup使用的一般流程BeautifulSoup的運(yùn)用一:格式化文檔BeautifulSoup使用前導(dǎo)入,格式:frombs4importBeautifulSoup使用格式為:bs對(duì)象=BeautifulSoup(要解析的文本,‘解析器’),第一個(gè)參數(shù)為字符串,第二個(gè)參數(shù)為解析器,我們這里要解析html文檔,所以用內(nèi)置的“html.parser“,當(dāng)然其實(shí)還有“xml“、“l(fā)xml”等

。bs對(duì)象的prettify()方法能標(biāo)準(zhǔn)化格式。在文檔中添加代碼:

soup=BeautifulSoup(html,"html.parser")#格式化html

print(soup.prettify())#按照標(biāo)準(zhǔn)的縮進(jìn)格式的結(jié)構(gòu)輸出BS選擇器1、基本選擇器2、css選擇器3、標(biāo)準(zhǔn)選擇器選擇器是為了查找、定位元素,從而獲取數(shù)據(jù)的。小結(jié)BeautifulSoup功能強(qiáng)大,使用卻十分簡(jiǎn)單,只要導(dǎo)入庫后,通過傳遞html源碼和解析器,就可以生成BS對(duì)象,通過操作對(duì)象就可以獲得我們需要的數(shù)據(jù)。Part02基本選擇器基本選擇器的幾種操作1234使用方法:

soup.tag#獲取第一個(gè)tag對(duì)象獲取元素獲取信息嵌套選擇關(guān)聯(lián)選擇使用方法:

#獲取tag名稱soup.tag.attrs#獲取tag屬性soup.tag.string#獲取tag內(nèi)容使用方法:

soup.tag1.tag2#獲取tag1對(duì)象中的tag2對(duì)象使用方法:

soup.tag.parent#獲取父結(jié)點(diǎn)soup.tag.contents#獲取子結(jié)點(diǎn)soup.tag.next_sibling#獲取下個(gè)兄弟結(jié)點(diǎn)

......小結(jié)基本選擇器原理和語法比較簡(jiǎn)單,當(dāng)頁面中標(biāo)簽不多時(shí),只需使用基本選擇器就能夠很快從中獲取相應(yīng)信息,但如果頁面標(biāo)簽較多,比較復(fù)雜時(shí),一般會(huì)結(jié)合其它選擇器共同協(xié)作完成。Part03CSS選擇器CSS選擇器簡(jiǎn)述CSS指層疊樣式表(CascadingStyleSheets),它定義如何顯示HTML元素。使用css選擇器可以通過對(duì)css的指定進(jìn)行快速定位、選擇。使用格式為:soup.select()Css選擇器的常用方法ID選擇器根據(jù)元素的ID號(hào)選擇相應(yīng)元素標(biāo)簽選擇器根據(jù)元素的標(biāo)簽名稱來選擇相應(yīng)元素類選擇器根據(jù)class樣式名來選擇元素混合使用用多種方式混合來選擇相應(yīng)的元素小結(jié)CSS選擇器使用靈活,能夠快速搜索出相應(yīng)的元素集,然后通過遍歷獲取相應(yīng)的信息。Part04標(biāo)準(zhǔn)選擇器標(biāo)準(zhǔn)選擇器標(biāo)準(zhǔn)選擇器有些文章中也稱之為方法選擇器。我們主要通過find_all()方法來學(xué)習(xí)如何搜索文檔樹基本格式:find_all(name,attrs,recursive,text,**kwargs)find_all()常見使用方法參數(shù)為字符串該參數(shù)當(dāng)作指定名字tag的屬性來搜索。字符串,正則表達(dá)式,列表,True.參數(shù)為屬性CSS類名搜索tag的功能非常實(shí)用參數(shù)為text通過參數(shù)可以搜文檔中的字符串內(nèi)容.與name參數(shù)的可選值一樣,接受字符串,正則表達(dá)式,列表,True.參數(shù)為recursive調(diào)用tag的find_all()方法時(shí),BeautifulSoup會(huì)檢索當(dāng)前tag的所有子孫節(jié)點(diǎn),如果只想搜索tag的直接子節(jié)點(diǎn),可以使用參數(shù)recursive=False.04010302小結(jié)除了find_all()以外,還有find()、find_parent()等等其它方法,使用方法大同小異。總結(jié)不管黑貓白貓,能抓老鼠就是好貓!Part05在復(fù)雜頁面中獲取數(shù)據(jù)準(zhǔn)備工作01首先,我們?nèi)【W(wǎng)頁的源碼,該內(nèi)容在前面講中已經(jīng)學(xué)習(xí),大致代碼如下:importurllibfromurllib.requestimporturlopenheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/79.0.3945.88Safari/537.36'}url="/"#豆瓣電影網(wǎng)request=urllib.request.Request(url=url,headers=headers)response=urllib.request.urlopen(request)html=response.read()print(html)頁面初步分析02點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。不難發(fā)現(xiàn),一般網(wǎng)頁的首頁動(dòng)輒上千行代碼,關(guān)鍵數(shù)據(jù)隱藏其中,查找十分不便。借助工具頁面分析03點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。以Chrome瀏覽器為例,打開網(wǎng)頁后,按F12快捷鍵,可以看到頁面的格式化源碼。大部分標(biāo)記代碼處于折疊狀態(tài),點(diǎn)擊三角可以打開。同時(shí)在鼠標(biāo)在右側(cè)代碼上滑動(dòng),左側(cè)相應(yīng)部分會(huì)顏色加深,便于查找。尋找數(shù)據(jù)04點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。以一周口碑榜為例,最簡(jiǎn)便操作步驟如下:1、用Chrome打開頁面后按F12在右側(cè)查看。2、點(diǎn)擊任意右側(cè)代碼后,按ctrl+F打開查詢窗口,輸入“一周口碑”后回車。3、查看右側(cè)上下標(biāo)記,查詢跟口碑有關(guān)的標(biāo)記標(biāo)記分析數(shù)據(jù)05點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。代碼分析:1、一周口碑榜的標(biāo)題文字和內(nèi)容處于不同的div層中2、排行榜共有10條數(shù)據(jù),放在了table中。3、table共有2列10行。也就是說有10對(duì)tr標(biāo)記。每個(gè)標(biāo)記里有都有兩對(duì)td提取數(shù)據(jù)05點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。根據(jù)前面學(xué)習(xí)的find_all函數(shù),我們可以輕易遍歷所有td標(biāo)記,從而將td中的內(nèi)容全部打印出來。代碼如下:importurllibfromurllib.requestimporturlopenfrombs4importBeautifulSoupheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/79.0.3945.88Safari/537.36'}url="file:///F:/work/beautifulsoup/test2.htm"request=urllib.request.Request(url=url,headers=headers)response=urllib.request.urlopen(request)html=response.read()soup=BeautifulSoup(html,"html.parser")foriteminsoup.find_all('td'):print(item.string)提取數(shù)據(jù)06點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。上述方法可能存在的問題:本例中td標(biāo)記恰好都是有用的,但如果網(wǎng)頁有有第二個(gè)table,那么程序可能出錯(cuò),因此應(yīng)該更精確地指定table。解決方案:find_all()可以指定查找標(biāo)記的屬性值。本例中排名的td有屬性class=”order”,而標(biāo)題有屬性class=”title”修改代碼如下:....soup=BeautifulSoup(html,"html.parser")orders=soup.find_all('td',class_='order')

#class是保留字,因而加了下劃線titles=soup.find_all('td',class_='title')n=len(orders)foriinrange(n):print(orders[i].string,titles[i].string)提取數(shù)據(jù)06點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。點(diǎn)擊輸入本欄的具體文字,簡(jiǎn)明扼要的說明分項(xiàng)內(nèi)容,此為概念圖解,請(qǐng)根據(jù)您的具體內(nèi)容酌情修改。任務(wù):提取正在熱映的電影列表操作流程:1、觀察代碼發(fā)現(xiàn)數(shù)據(jù)均在li標(biāo)記中。但網(wǎng)頁的li標(biāo)記非常多。2、通過指定屬性來

class='ui-slide-item'

減少

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論