版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xià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ù)與本地?cái)?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í)慣以提高代碼靈活性。知識(shí)圖譜項(xiàng)目背景為了完成老師針對(duì)茶葉品類做一份詳盡調(diào)查報(bào)告的任務(wù),在學(xué)習(xí)了Python的基本操作以后,小張首先需要進(jìn)行茶葉品類相關(guān)數(shù)據(jù)的獲取,而對(duì)數(shù)據(jù)的收集工作,網(wǎng)絡(luò)爬蟲有著極高的效率與準(zhǔn)確性,可以用較短的時(shí)間獲取大量的數(shù)據(jù)以供分析,故小張將在本項(xiàng)目開始學(xué)習(xí)如何利用Python進(jìn)行網(wǎng)絡(luò)爬蟲爬取需要的數(shù)據(jù)并保存到本地。在本項(xiàng)目中,小張需要學(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ù)并運(yùn)用之前學(xué)習(xí)到的知識(shí)將其以Excel的格式保存在本地。網(wǎng)頁結(jié)構(gòu)01一、網(wǎng)頁結(jié)構(gòu)URL,又可以稱之為網(wǎng)址,每一個(gè)網(wǎng)頁都對(duì)應(yīng)著一個(gè)網(wǎng)址,編寫的爬蟲軟件通過URL來定位到網(wǎng)頁。URL的組件構(gòu)成,包括協(xié)議、域名、端口號(hào)、路徑和查詢字符等。/s?wd=python&ie=utf-8表示在百度上搜索Python且編碼為utf-8“?”分隔路徑和查詢參數(shù)“=”查詢數(shù)據(jù)中的鍵值對(duì)“&”分隔多個(gè)查詢鍵值對(duì)什么是URL?一、網(wǎng)頁結(jié)構(gòu)網(wǎng)頁一般由三部分組成:CSS(層疊樣式表)HTML(超文本標(biāo)記語言)JavaScript(動(dòng)態(tài)腳本語言)負(fù)責(zé)定義網(wǎng)頁的內(nèi)容,是爬蟲需要重點(diǎn)分析的部分。網(wǎng)頁的構(gòu)成一、網(wǎng)頁結(jié)構(gòu)HTML是網(wǎng)頁的基本結(jié)構(gòu),可以看作是人體的骨骼。在網(wǎng)頁的源代碼中HTML標(biāo)簽同時(shí)帶有“<”與“>”符號(hào),與Python中使用中括號(hào)定義一個(gè)列表類似,常見的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>表示列表項(xiàng)表示列表項(xiàng)<imgsrc=""alt="">表示圖片<h1>..</h1>表示圖片<ahref="">..</a>表示超鏈接一、網(wǎng)頁結(jié)構(gòu)【案例】在記事本中輸入以下代碼內(nèi)容,存儲(chǔ)類型選擇為“所有類型”,文件命名為:1.html。<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <title>大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)</title></head><body>
<ahref="">點(diǎn)擊搜索</a>
<h1>大數(shù)據(jù)技術(shù)應(yīng)用基礎(chǔ)</h1>
<h2>Python爬蟲</h2>
<div> <p>認(rèn)識(shí)網(wǎng)頁結(jié)構(gòu)</p> <ul> <li>HTML</li> <li>CSS</li> </ul>
</div> </body></html>代碼輸出結(jié)果(在瀏覽器中)Request庫的使用方法02二、Request庫的使用方法Requests庫是一個(gè)第三方庫,是在urllib庫的基礎(chǔ)上開發(fā)而來,與urllib庫相比,更加的方便快捷,在實(shí)際中更為常用。常用的請(qǐng)求函數(shù)為:requests.get(url,headers,params,timeout)url參數(shù):網(wǎng)址headers:代表表頭,其中有瀏覽器標(biāo)識(shí)等信息params:代表傳入網(wǎng)頁的參數(shù)timeout:代表最大請(qǐng)求時(shí)間,超過時(shí)間則拋出異常二、Request庫的使用方法代碼importrequests#導(dǎo)入requests庫url=''#定義要訪問的網(wǎng)址response=requests.get(url)#請(qǐng)求網(wǎng)址print(response)#放回網(wǎng)址的回應(yīng)data={'name':'百度','url':""}#要傳入請(qǐng)求網(wǎng)址的參數(shù)response=requests.get('/get',params=data)#使用get方法請(qǐng)求網(wǎng)頁,也可直接請(qǐ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是一個(gè)在Github上托管的開源項(xiàng)目,當(dāng)請(qǐng)求該網(wǎng)站時(shí)會(huì)返回相應(yīng)的響應(yīng)信息。Response[200]代表請(qǐng)求成功,與網(wǎng)頁成功連通。二、Request庫的使用方法通過Requests庫請(qǐng)求后網(wǎng)頁將返回一個(gè)HttpResponse響應(yīng)對(duì)象,其擁有許多屬性,此處選取常用屬性展示,使用的代碼命令與結(jié)果如下所示。代碼importrequests#導(dǎo)入requests庫response=requests.get('')#請(qǐng)求百度的網(wǎng)址print(response.encoding)#輸出網(wǎng)頁的編碼response.encoding="utf-8"#將得到的網(wǎng)頁編碼轉(zhuǎn)化為“utf-8”print(response.status_code)#輸出請(qǐng)求的狀態(tài)碼,200表示連通print(response.url)#輸出請(qǐng)求的網(wǎng)址print(response.headers)#輸出發(fā)起請(qǐng)求的表頭print(response.cookies)#輸出此次訪問的cookiesprint(response.text)#以字符串形式輸出網(wǎng)頁源碼print(response.content)#以字節(jié)流形式輸出網(wǎng)頁源碼二、Request庫的使用方法通過Requests庫請(qǐng)求后網(wǎng)頁將返回一個(gè)HttpResponse響應(yīng)對(duì)象,其擁有許多屬性,此處選取常用屬性展示,使用的代碼命令與結(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./>]>#后兩項(xiàng)為網(wǎng)頁源碼內(nèi)容過長,此處忽略二、Request庫的使用方法1.其中encoding表示網(wǎng)頁編碼,對(duì)其賦值可以轉(zhuǎn)換請(qǐng)求得到的網(wǎng)頁的編碼,此處將‘ISO-8859-1’編碼轉(zhuǎn)化為‘utf-8’編碼。2.status_code表示狀態(tài)碼,200為連通狀態(tài),其他狀態(tài)碼還有404表示服務(wù)器未找到,503代表連接超時(shí)等。3.url表示請(qǐng)求的URL。4.headers代表頭信息,可以看到其中有瀏覽器標(biāo)識(shí)、請(qǐng)求時(shí)間、網(wǎng)頁最后更新時(shí)間等信息。5.cookies表示訪問的cookies信息,是根據(jù)本地訪問信息生成的一條鏈接,此處不作展開。6.text表示以字符串形式返回網(wǎng)頁源碼。content表示以字節(jié)流形式放回網(wǎng)頁源碼,若要下載圖片需要使用content屬性。BeautifulSoup庫的使用方法03三、BeautifulSoup庫的使用方法BeautifulSoup簡稱BS4(其中4表示版本號(hào))是一個(gè)Python第三方庫,它可以從HTML或XML文檔中快速地提取指定的數(shù)據(jù)。BeautifulSoup語法簡單,使用方便,容易理解。概念BeautifulSoup三、BeautifulSoup庫的使用方法BeautifulSoup(source,parser)得到HttpResponse響應(yīng)對(duì)象后,首先需要使用文檔解析器將其解析為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')#對(duì)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庫的使用方法對(duì)BeautifulSoup對(duì)象進(jìn)行具體分析BeautifulSoup將復(fù)雜HTML文檔轉(zhuǎn)換成一個(gè)復(fù)雜的樹形結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都是Python對(duì)象,所有對(duì)象可以歸納為4種圖1網(wǎng)頁結(jié)構(gòu)數(shù)樹三、BeautifulSoup庫的使用方法在BeautifulSoup的樹中每一個(gè)節(jié)點(diǎn)都是一個(gè)Python對(duì)象,其分類有四類:1.Tag:標(biāo)簽類,對(duì)應(yīng)HTML文檔中的標(biāo)簽2.NavigableString:字符串類,對(duì)應(yīng)標(biāo)簽中的文本內(nèi)容3.BeautifulSoup:表示一個(gè)HTML文檔的全部內(nèi)容4.Comment:表示HTML文檔中的注釋內(nèi)容或特殊字符串,可以看作一個(gè)特殊的NavigableString對(duì)BeautifulSoup對(duì)象進(jìn)行具體分析三、BeautifulSoup庫的使用方法獲取想要的數(shù)據(jù)主要用到兩個(gè)函數(shù):find_all(name,attrs,recursive,text,limit)find(name,attrs,recursive,text)find_all返回一個(gè)所有符合條件的結(jié)果的列表find返回第一個(gè)符合條件的結(jié)果name代表標(biāo)簽名。attrs代表屬性與值。recursive=True遍歷所有子孫節(jié)點(diǎn),recursive=False則只遍歷所有直接子節(jié)點(diǎn)。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"}#表頭信息,此處表明使用火狐瀏覽器訪問,版本號(hào)為82.0,需要更換其他可以在網(wǎng)絡(luò)上自行搜索begin=1#起始頁stop=18#終止頁goodPrice=[]#創(chuàng)建一個(gè)空的保存列表保存爬取得到的數(shù)據(jù)foriinrange(begin,stop+1):#遍歷每一頁得到商品屬性u(píng)rl2=url+str(i)#字符串拼接得到不同頁的具體url以爬取茶葉品類網(wǎng)站使用的代碼作為示例(接下頁)獲取想要的數(shù)據(jù)三、BeautifulSoup庫的使用方法
代碼
response=requests.get(url=url2,headers=headers)#使用requests庫的get方法請(qǐng)求網(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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 氫能技術(shù)研發(fā)合作合同
- 水磨石地面施工合同1正規(guī)范本
- 2025版土地挖地合同范本 - 生態(tài)修復(fù)與景觀設(shè)計(jì)2篇
- 2025年度個(gè)人租房押金管理合同范本大全3篇
- 2025年技術(shù)人才社會(huì)勞務(wù)派遣合同
- 2025年在線課程設(shè)計(jì)合同
- 2025年醫(yī)療療效評(píng)估合同
- 2025年分期影視節(jié)目錄制合同
- 2025年度個(gè)人濕地保護(hù)與恢復(fù)承包合同4篇
- 二零二五年度美容師職業(yè)技能培訓(xùn)及聘用合同4篇
- 高中物理競(jìng)賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 高中英語選擇性必修一單詞表
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 孕婦學(xué)校品管圈課件
- 《愿望的實(shí)現(xiàn)》交流ppt課件2
- 中國直銷發(fā)展四個(gè)階段解析
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學(xué)高一物理第一學(xué)期期末質(zhì)量檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論