![《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》課件 項目三模塊三 網(wǎng)頁采集方法_第1頁](http://file4.renrendoc.com/view11/M03/3C/34/wKhkGWXuwd6AQIF7AAFyvB2XLm8388.jpg)
![《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》課件 項目三模塊三 網(wǎng)頁采集方法_第2頁](http://file4.renrendoc.com/view11/M03/3C/34/wKhkGWXuwd6AQIF7AAFyvB2XLm83882.jpg)
![《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》課件 項目三模塊三 網(wǎng)頁采集方法_第3頁](http://file4.renrendoc.com/view11/M03/3C/34/wKhkGWXuwd6AQIF7AAFyvB2XLm83883.jpg)
![《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》課件 項目三模塊三 網(wǎng)頁采集方法_第4頁](http://file4.renrendoc.com/view11/M03/3C/34/wKhkGWXuwd6AQIF7AAFyvB2XLm83884.jpg)
![《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》課件 項目三模塊三 網(wǎng)頁采集方法_第5頁](http://file4.renrendoc.com/view11/M03/3C/34/wKhkGWXuwd6AQIF7AAFyvB2XLm83885.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目三數(shù)據(jù)采集《大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)》模塊三
網(wǎng)頁采集方法核心目標(biāo)職業(yè)能力1.了解網(wǎng)絡(luò)爬蟲的用途以及相關(guān)使用規(guī)范;2.能掌握Python爬蟲的基本流程框架;3.能使用Python爬蟲爬取需要的數(shù)據(jù);4.能將Python處理的數(shù)據(jù)與本地數(shù)據(jù)相互轉(zhuǎn)換。職業(yè)素養(yǎng)1.養(yǎng)成自行獲取數(shù)據(jù)分析所需要資料的習(xí)慣;2.培養(yǎng)遵守相關(guān)網(wǎng)絡(luò)爬蟲法律規(guī)定與規(guī)范的精神;3.培養(yǎng)編寫規(guī)范代碼習(xí)慣以提高代碼靈活性。知識圖譜項目背景為了完成老師針對茶葉品類做一份詳盡調(diào)查報告的任務(wù),在學(xué)習(xí)了Python的基本操作以后,小張首先需要進(jìn)行茶葉品類相關(guān)數(shù)據(jù)的獲取,而對數(shù)據(jù)的收集工作,網(wǎng)絡(luò)爬蟲有著極高的效率與準(zhǔn)確性,可以用較短的時間獲取大量的數(shù)據(jù)以供分析,故小張將在本項目開始學(xué)習(xí)如何利用Python進(jìn)行網(wǎng)絡(luò)爬蟲爬取需要的數(shù)據(jù)并保存到本地。在本項目中,小張需要學(xué)習(xí)本地文件的操作以及如何編寫爬蟲程序,找到適合的數(shù)據(jù)網(wǎng)頁,并使用爬蟲數(shù)據(jù)進(jìn)行爬取,最后再使用本地文件的操作方法將數(shù)據(jù)保存為Excel類的表格型文件。0102網(wǎng)頁結(jié)構(gòu)Request庫的使用方法03BeautifulSoup庫的使用方法問題引入在了解到網(wǎng)絡(luò)爬蟲的妙用之后,小張決定使用Python編寫網(wǎng)絡(luò)爬蟲程序以爬取所需要的茶葉品類相關(guān)數(shù)據(jù),為了成功編寫程序爬取數(shù)據(jù),小張開始學(xué)習(xí)Python爬蟲常用的數(shù)據(jù)庫Requests庫和BeautifulSoup(BS4)庫,并希望學(xué)習(xí)過后能夠自己爬取下來某銷售網(wǎng)站上不同茶葉品類的產(chǎn)品數(shù)據(jù)以及銷售數(shù)據(jù)并運用之前學(xué)習(xí)到的知識將其以Excel的格式保存在本地。網(wǎng)頁結(jié)構(gòu)01一、網(wǎng)頁結(jié)構(gòu)URL,又可以稱之為網(wǎng)址,每一個網(wǎng)頁都對應(yīng)著一個網(wǎng)址,編寫的爬蟲軟件通過URL來定位到網(wǎng)頁。URL的組件構(gòu)成,包括協(xié)議、域名、端口號、路徑和查詢字符等。/s?wd=python&ie=utf-8表示在百度上搜索Python且編碼為utf-8“?”分隔路徑和查詢參數(shù)“=”查詢數(shù)據(jù)中的鍵值對“&”分隔多個查詢鍵值對什么是URL?一、網(wǎng)頁結(jié)構(gòu)網(wǎng)頁一般由三部分組成:CSS(層疊樣式表)HTML(超文本標(biāo)記語言)JavaScript(動態(tài)腳本語言)負(fù)責(zé)定義網(wǎng)頁的內(nèi)容,是爬蟲需要重點分析的部分。網(wǎng)頁的構(gòu)成一、網(wǎng)頁結(jié)構(gòu)HTML是網(wǎng)頁的基本結(jié)構(gòu),可以看作是人體的骨骼。在網(wǎng)頁的源代碼中HTML標(biāo)簽同時帶有“<”與“>”符號,與Python中使用中括號定義一個列表類似,常見的HTML標(biāo)簽如表。標(biāo)簽含義<!DOCTYPEhtml>聲明為HTML5文檔<html>..</html>表示網(wǎng)頁的根元素<head>..</head>此元素包含了文檔的元(meta)數(shù)據(jù),如<metacharset="gbk">定義網(wǎng)頁編碼格式為gbk。<title>..<title>表示文檔的標(biāo)題<body>..</body>表示用戶可見的內(nèi)容<div>..</div>表示框架<p>..</p>表示段落<ul>..</ul>定義無序列表<ol>..</ol>定義有序列表<li>..</li>表示列表項表示列表項<imgsrc=""alt="">表示圖片<h1>..</h1>表示圖片<ahref="">..</a>表示超鏈接一、網(wǎng)頁結(jié)構(gòu)【案例】在記事本中輸入以下代碼內(nèi)容,存儲類型選擇為“所有類型”,文件命名為:1.html。<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <title>大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)</title></head><body>
<ahref="">點擊搜索</a>
<h1>大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)</h1>
<h2>Python爬蟲</h2>
<div> <p>認(rèn)識網(wǎng)頁結(jié)構(gòu)</p> <ul> <li>HTML</li> <li>CSS</li> </ul>
</div> </body></html>代碼輸出結(jié)果(在瀏覽器中)Request庫的使用方法02二、Request庫的使用方法Requests庫是一個第三方庫,是在urllib庫的基礎(chǔ)上開發(fā)而來,與urllib庫相比,更加的方便快捷,在實際中更為常用。常用的請求函數(shù)為:requests.get(url,headers,params,timeout)url參數(shù):網(wǎng)址headers:代表表頭,其中有瀏覽器標(biāo)識等信息params:代表傳入網(wǎng)頁的參數(shù)timeout:代表最大請求時間,超過時間則拋出異常二、Request庫的使用方法代碼importrequests#導(dǎo)入requests庫url=''#定義要訪問的網(wǎng)址response=requests.get(url)#請求網(wǎng)址print(response)#放回網(wǎng)址的回應(yīng)data={'name':'百度','url':""}#要傳入請求網(wǎng)址的參數(shù)response=requests.get('/get',params=data)#使用get方法請求網(wǎng)頁,也可直接請求/get?name=百度&url=。print(response.text)#以字符串形式輸出網(wǎng)頁源碼,二、Request庫的使用方法輸出結(jié)果<Response[200]>{"args":{"name":"\u767e\u5ea6","url":""},"headers":{"Accept":"*/*","Accept-Encoding":"gzip,deflate","Host":"","User-Agent":"python-requests/2.24.0","X-Amzn-Trace-Id":"Root=1-63e9fe6c-537618646df73e5c62e3c536"},"origin":"24","url":"/get?name=\u767e\u5ea6&url="httpbin是一個在Github上托管的開源項目,當(dāng)請求該網(wǎng)站時會返回相應(yīng)的響應(yīng)信息。Response[200]代表請求成功,與網(wǎng)頁成功連通。二、Request庫的使用方法通過Requests庫請求后網(wǎng)頁將返回一個HttpResponse響應(yīng)對象,其擁有許多屬性,此處選取常用屬性展示,使用的代碼命令與結(jié)果如下所示。代碼importrequests#導(dǎo)入requests庫response=requests.get('')#請求百度的網(wǎng)址print(response.encoding)#輸出網(wǎng)頁的編碼response.encoding="utf-8"#將得到的網(wǎng)頁編碼轉(zhuǎn)化為“utf-8”print(response.status_code)#輸出請求的狀態(tài)碼,200表示連通print(response.url)#輸出請求的網(wǎng)址print(response.headers)#輸出發(fā)起請求的表頭print(response.cookies)#輸出此次訪問的cookiesprint(response.text)#以字符串形式輸出網(wǎng)頁源碼print(response.content)#以字節(jié)流形式輸出網(wǎng)頁源碼二、Request庫的使用方法通過Requests庫請求后網(wǎng)頁將返回一個HttpResponse響應(yīng)對象,其擁有許多屬性,此處選取常用屬性展示,使用的代碼命令與結(jié)果如下所示。輸出結(jié)果ISO-8859-1200/{'Cache-Control':'private,no-cache,no-store,proxy-revalidate,no-transform','Connection':'keep-alive','Content-Encoding':'gzip','Content-Type':'text/html','Date':'Mon,13Feb202309:30:00GMT','Last-Modified':'Mon,23Jan201713:27:57GMT','Pragma':'no-cache','Server':'bfe/8','Set-Cookie':'BDORZ=27315;max-age=86400;domain=.;path=/','Transfer-Encoding':'chunked'}<RequestsCookieJar[<CookieBDORZ=27315for./>]>#后兩項為網(wǎng)頁源碼內(nèi)容過長,此處忽略二、Request庫的使用方法1.其中encoding表示網(wǎng)頁編碼,對其賦值可以轉(zhuǎn)換請求得到的網(wǎng)頁的編碼,此處將‘ISO-8859-1’編碼轉(zhuǎn)化為‘utf-8’編碼。2.status_code表示狀態(tài)碼,200為連通狀態(tài),其他狀態(tài)碼還有404表示服務(wù)器未找到,503代表連接超時等。3.url表示請求的URL。4.headers代表頭信息,可以看到其中有瀏覽器標(biāo)識、請求時間、網(wǎng)頁最后更新時間等信息。5.cookies表示訪問的cookies信息,是根據(jù)本地訪問信息生成的一條鏈接,此處不作展開。6.text表示以字符串形式返回網(wǎng)頁源碼。content表示以字節(jié)流形式放回網(wǎng)頁源碼,若要下載圖片需要使用content屬性。BeautifulSoup庫的使用方法03三、BeautifulSoup庫的使用方法BeautifulSoup簡稱BS4(其中4表示版本號)是一個Python第三方庫,它可以從HTML或XML文檔中快速地提取指定的數(shù)據(jù)。BeautifulSoup語法簡單,使用方便,容易理解。概念BeautifulSoup三、BeautifulSoup庫的使用方法BeautifulSoup(source,parser)得到HttpResponse響應(yīng)對象后,首先需要使用文檔解析器將其解析為BS4可以解析的HTML格式,使用的函數(shù)為:source:表示要解析的網(wǎng)頁源代碼。parser:表示選擇的解析器,在Python中可以選擇lxml解析器、xml解析器等。三、BeautifulSoup庫的使用方法代碼frombs4importBeautifulSoup#導(dǎo)入BeautifulSoup庫txt="""<html><head><title>"百度"</title></head><body><pclass="title"><b></b></p><pclass="website">百度搜索<ahref="/"id="link1">新聞</a><ahref=""id="link2">圖片</a>"""#txt為一串不完整的html源碼soup=BeautifulSoup(txt,'lxml')#對txt進(jìn)行解析,使用lxml解析器print(soup.prettify)#輸出規(guī)范解析后規(guī)范的html源碼BeautifulSoup函數(shù)的具體案例使用的代碼命令與結(jié)果三、BeautifulSoup庫的使用方法輸出結(jié)果<html><head><title>"百度"</title></head><body><pclass="title"><b>
</b></p><pclass="website">百度搜索<ahref="/"id="link1">新聞</a><ahref=""id="link2">圖片</a></p></body></html>三、BeautifulSoup庫的使用方法對BeautifulSoup對象進(jìn)行具體分析BeautifulSoup將復(fù)雜HTML文檔轉(zhuǎn)換成一個復(fù)雜的樹形結(jié)構(gòu),每個節(jié)點都是Python對象,所有對象可以歸納為4種圖1網(wǎng)頁結(jié)構(gòu)數(shù)樹三、BeautifulSoup庫的使用方法在BeautifulSoup的樹中每一個節(jié)點都是一個Python對象,其分類有四類:1.Tag:標(biāo)簽類,對應(yīng)HTML文檔中的標(biāo)簽2.NavigableString:字符串類,對應(yīng)標(biāo)簽中的文本內(nèi)容3.BeautifulSoup:表示一個HTML文檔的全部內(nèi)容4.Comment:表示HTML文檔中的注釋內(nèi)容或特殊字符串,可以看作一個特殊的NavigableString對BeautifulSoup對象進(jìn)行具體分析三、BeautifulSoup庫的使用方法獲取想要的數(shù)據(jù)主要用到兩個函數(shù):find_all(name,attrs,recursive,text,limit)find(name,attrs,recursive,text)find_all返回一個所有符合條件的結(jié)果的列表find返回第一個符合條件的結(jié)果name代表標(biāo)簽名。attrs代表屬性與值。recursive=True遍歷所有子孫節(jié)點,recursive=False則只遍歷所有直接子節(jié)點。text表示用來搜索文檔中的字符串內(nèi)容,該參數(shù)可以接受字符串、正則表達(dá)式、列表、布爾值等變量類型。三、BeautifulSoup庫的使用方法代碼importrequests#導(dǎo)入requests庫frombs4importBeautifulSoup#從bs庫導(dǎo)入BeautifulSoup方法url='33:8082/fstmicd/index.aspx?pintkey=ODA=&page='#要訪問的網(wǎng)頁headers={'User-Agent':"Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:82.0)Gecko/20100101Firefox/82.0"}#表頭信息,此處表明使用火狐瀏覽器訪問,版本號為82.0,需要更換其他可以在網(wǎng)絡(luò)上自行搜索begin=1#起始頁stop=18#終止頁goodPrice=[]#創(chuàng)建一個空的保存列表保存爬取得到的數(shù)據(jù)foriinrange(begin,stop+1):#遍歷每一頁得到商品屬性url2=url+str(i)#字符串拼接得到不同頁的具體url以爬取茶葉品類網(wǎng)站使用的代碼作為示例(接下頁)獲取想要的數(shù)據(jù)三、BeautifulSoup庫的使用方法
代碼
response=requests.get(url=url2,headers=headers)#使用requests庫的get方法請求網(wǎng)頁html=response.content.decode()#獲取網(wǎng)頁源代碼且解碼(即轉(zhuǎn)換為可讀編碼)soup=BeautifulSoup(html,'lxml')#使用BeautifulSoup解析網(wǎng)頁源碼pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏組件回收產(chǎn)業(yè)鏈分析
- 二零二五版天然氣運輸合同協(xié)議書范本模板(含運輸保險)2篇
- 二零二五年度行政協(xié)議指導(dǎo)大全:環(huán)境保護(hù)合作協(xié)議3篇
- 婚慶行業(yè)安全生產(chǎn)工作總結(jié)
- 2025版物流企業(yè)物流外包合作協(xié)議6篇
- 二零二五年度綠色能源裝備制造個人股東股權(quán)轉(zhuǎn)讓合同2篇
- 光纖通信技術(shù)應(yīng)用知到智慧樹章節(jié)測試課后答案2024年秋四川職業(yè)技術(shù)學(xué)院
- 二零二五版實習(xí)期員工勞動合同-實習(xí)期間安全防護(hù)3篇
- 二零二五年度酒店客房裝修與設(shè)施更新合同4篇
- 二零二五版?zhèn)D(zhuǎn)股投資合作協(xié)議書(產(chǎn)業(yè)鏈整合)3篇
- 北京市北京四中2025屆高三第四次模擬考試英語試卷含解析
- 2024年快遞行業(yè)無人機物流運輸合同范本及法規(guī)遵循3篇
- 傷殘撫恤管理辦法實施細(xì)則
- 2024-2030年中國產(chǎn)教融合行業(yè)市場運營態(tài)勢及發(fā)展前景研判報告
- 2024年微生物檢測試劑行業(yè)商業(yè)計劃書
- 高中英語選擇性必修一單詞表
- 物業(yè)公司介紹
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗收規(guī)范
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 中國直銷發(fā)展四個階段解析
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學(xué)高一物理第一學(xué)期期末質(zhì)量檢測試題含解析
評論
0/150
提交評論