第6-8講:數(shù)據(jù)篩選_第1頁
第6-8講:數(shù)據(jù)篩選_第2頁
第6-8講:數(shù)據(jù)篩選_第3頁
第6-8講:數(shù)據(jù)篩選_第4頁
第6-8講:數(shù)據(jù)篩選_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

趣學Python爬蟲數(shù)據(jù)預處理之數(shù)據(jù)篩選本課目錄INDEX一個網(wǎng)絡爬蟲的基本構成數(shù)據(jù)的篩選方式數(shù)據(jù)正則提取數(shù)據(jù)bs4/lxml提取數(shù)據(jù)xpath提取案例實踐一個網(wǎng)絡爬蟲的基本構成一個完整的網(wǎng)絡爬蟲就是三個大的組成部分找篩本講我們就來探討如何篩存數(shù)據(jù)的篩選方式爬蟲獲取的數(shù)據(jù)形態(tài)靜態(tài)爬蟲動態(tài)爬蟲非結(jié)構化基本結(jié)構化數(shù)據(jù)的篩選方式正則表達式bs4/lxmletree/xpath硬剛模式根據(jù)規(guī)則直接提取(文本、網(wǎng)頁、數(shù)據(jù)均可)解析模式Bs4他能讀懂網(wǎng)頁/跟瀏覽器一樣,通過屬性或方法定位目標標簽找的是規(guī)律找的是關系解析模式以樹狀結(jié)構,一級一級穿透到目標找的是通路爬蟲篩選可以了解三種

但是切記最后要死磕一個數(shù)據(jù)的篩選方式本課的三個庫/包正則表達式包re

無需安裝

Python自帶pip

install

bs4

beautiful

soup

解析平臺pip

install

lxml

解析器數(shù)據(jù)的篩選方式請求requests獲取數(shù)據(jù)取得頁面代碼文本text數(shù)據(jù)篩選正則text提取規(guī)則提取bs4/xmltextbs4解析對象提取etree/xpathtextetree解析對象提取提取數(shù)據(jù)提取之頁面分析我們先來分析一段頁面文本特別注意!

分析頁面是每個爬蟲提取的重要步驟知己知彼

百戰(zhàn)不殆htmlheadbodymetadivullia一級根級頂級二級 三級四五六級數(shù)據(jù)正則提取網(wǎng)傳說正則是爬蟲提取最難的,其實不然。之所以這么說是因為正則本身的確非常難,因為它適用于所有的文本關鍵字提取場景比如:郵件、電話、關鍵字等等。但在是爬蟲中,使用正則可應用的規(guī)則極少。所以正則在爬蟲這個場景中沒有那么恐怖,這個也是正正個人比較喜歡的方式。注意!

之所以說正則是“硬剛”

,它會忽略頁面的結(jié)構,按照正則表達式,提取文本內(nèi)容鏈接為目標提取內(nèi)容(.*?)匹配所有內(nèi)容并提取.*?

匹配所有內(nèi)容但不提取#

flags=re.S

這里特指是當出現(xiàn)

.匹配符號時,匹配全文,無論是否有換行、空格

##正則提取的重點在于找到相同的規(guī)律#數(shù)據(jù)正則提取通常來說,

一個頁面為了便于維護,同類內(nèi)容使用一樣的標簽,換句話說他們的“規(guī)律”是一樣的比如說課程的名字都是

一個

li標簽

內(nèi)含一個a標簽,a標簽

是我們需要提取的內(nèi)容既然知道

a標簽是我們需要的終極目標,為什么不直接提取a呢?WHY?數(shù)據(jù)正則提取如果正則表達式寫成這樣,

就是直接提取a標簽內(nèi)容干擾項目標項但是,這個頁面里有干擾項,會導致數(shù)據(jù)提取不夠精準所以,我們要保證提取的a標簽必須要在li標簽內(nèi)知識延伸a標簽,是一個超鏈接標簽,即點擊一個文字就可以跳轉(zhuǎn)到另一個頁面。a標簽在靜態(tài)頁面上出鏡率是極高的數(shù)據(jù)bs4/lxml提取bs4+lxml構建方式“指名道姓”法“路徑規(guī)則”法引入bs4包打開一個文本創(chuàng)建soup對象content目標文本使用lxml解釋器注意!這里lxml無需引入,bs4會自動引入當soup對象成功建立以后,原來的文本,就已經(jīng)被解析成一個網(wǎng)頁了,通俗的說,bs4就已經(jīng)認識里邊存在的標簽、屬性、文本,我們對soup這個對象操作的時候,就可以通過表達式或方法直接進行所需數(shù)據(jù)提取。注意!這里的content可以是從requests直接返回的文本方法一提取方法二數(shù)據(jù)bs4/lxml提取bs4+lxml“指名道姓”法

單條件定位res=soup.find_all(name=

‘a(chǎn)’)返回一張列表,提取了所有a標簽根據(jù)標簽tagName即標簽名稱(<a>

<p>

<div>)定位提取[<a

href="https://www">點擊進入萬門大學</a>,<a

href="https://"

style="width:30px">英語外刊精讀精練</a>,<a

>特許金融分析師</a>,<a

href="https://">Photoshop入門到精通</a>,<a

href="https:///">趣學Python爬蟲</a>]定位標簽特別注意!列表的每個元素是一個對象!獲取目標數(shù)據(jù)my_info=

res[0].text輸出:點擊進入萬門大學文本獲取屬性獲取my_info=

res[0].attrs[‘href’]輸出:https//數(shù)據(jù)bs4/lxml提取bs4+lxml“指名道姓”法

–雙條件定位與疊加定位我們要精確提取排除干擾怎么辦?鎖定提取范圍注意我們之前的提取范圍是針對全部頁面,現(xiàn)在我們可以看到,需要提取的內(nèi)容實際上是在div這個大標簽里的ul下的li下的a疊加提取條件因為有兩個div,我們要去確定是哪一個,只通過div標簽定位是不夠的,我們可以加上div里的屬性對最終目標提取二級篩選穿透到a標簽</div>,])res=soup.find_all(name=‘div’,attrs={'class':'others’}

)返回一張列表,提取了所有div標簽(滿足條件的只有一個特別注意!列表的每個元素是一個對象![<divclass="others"id="_others"><ul><li><ahref="https:///courses/5fa"style="width:30px">英語外刊精讀精練</a></li><li><a

href="https:///courses/5ef1">特許金融分析師(CFA

三級)</a></li>(……省略)雙條件定位疊加定位獲取數(shù)據(jù)my_info=res[0].find_all(name=‘a(chǎn)’)[<ahref="https:///,..,

]獲取數(shù)據(jù)獲取全部文本屬性forxin

my_info:print(x.text,x.attrs[‘href’]

)數(shù)據(jù)bs4/lxml提取bs4+lxml“指名道姓”法

–雙條件定位與疊加定位英語外刊精讀精練

https://www.wanm/courses/5fa特許金融分析師(CFA

三級)

https://www.wanm/courses/5ef1….省略輸出:數(shù)據(jù)bs4/lxml提取bs4+lxml“路徑規(guī)則”法res=soup.select(selector

=“#_others>ul>li>a”

)路徑定位#

定位id屬性

.

定位class屬性特別注意!

>

代表一級一級向下穿透[<ahref="https://"style="width:30px">英語外刊精讀精練</a>,<a

href="https:///">特許金融分析師</a>,<a

href="https://">Photoshop入門到精通</a>,<a

>趣學Python爬蟲</a>]獲取 forxin

my_info:目標 print(x.text,x.attrs[‘href’]

)數(shù)據(jù)輸出:英語外刊精讀精練

https://www.wanm/courses/5fa特許金融分析師(CFA

三級)

https://www.wanm/courses/5ef1….省略數(shù)據(jù)xpath提取etree(lxml)+

xpath數(shù)據(jù)提取從lxml引入etree包讀取本地文檔創(chuàng)建頁面解析對象Content目標文本xpath路徑定位頁面層級路徑(標簽的從屬關系)etree(lxml)+

xpath從頭開始res=tree.xpath(“/html/head/title”

)路徑定位返回一張列表,提取了當前路徑滿足條件的所有數(shù)據(jù)特別注意!列表的每個元素是一個對象![<Elementtitleat

0x7f99f8625be0>]數(shù)據(jù)提取my_info=

res[0].text輸出:萬門大學特別注意!

/html/head/title

如果你從頭開始,一定要以/開始,這個代表“根”數(shù)據(jù)xpath提取etree(lxml)+

xpath屬性定位res=

tree.xpath('/html//div[@class="others"]//a')屬性定位返回一張列表,提取了當前路徑滿足條件的所有數(shù)據(jù)特別注意!列表的每個元素是一個對象![<Elementpat

0x7f84d8f1db40>,<Elementpat

0x7f84d8f1db90>,<Elementpat

0x7f84d8f1dbe0>,<Elementpat

0x7f84d8f1dc30>]數(shù)據(jù)提取forxinres:print(x.text)輸出:英語外刊精讀精練特許金融分析師(CFA

三級)Photoshop入門到精通趣學Python爬蟲數(shù)據(jù)xpath提取etree(lxml)+

xpath定位后提取屬性值數(shù)據(jù)xpath提取res=tree.xpath(‘/html//a/@href’

)屬性定位返回一張列表,提取了當前路徑滿足條件的所有數(shù)據(jù)列表直接裝載屬性值字符串['','https:///courses/5fa','https:///courses/5ef1',

'https:///courses/5fac',

'https:///courses/5fb768a429']數(shù)據(jù)xpath提取xpath路徑

溫馨提示

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

評論

0/150

提交評論