python爬蟲入門課件_第1頁
python爬蟲入門課件_第2頁
python爬蟲入門課件_第3頁
python爬蟲入門課件_第4頁
python爬蟲入門課件_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Python爬蟲快速入門中南大學 商學院鄧旭東第1頁,共69頁。自我介紹2009-2013 哈爾濱工業(yè)大學經(jīng)濟管理學院2015-至今 中南大學商學院 主要研究方向為線上社群及消費者行為, 在學習研究過程中,習得了數(shù)據(jù)科學相關(guān)技術(shù), 如數(shù)據(jù)采集、數(shù)據(jù)清理、數(shù)據(jù)規(guī)整、統(tǒng)計分析熟悉R、python、MongoDB。第2頁,共69頁。目錄二、準備知識一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTML+CSSPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數(shù)

2、據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 第3頁,共69頁。引言 爬蟲能做什么?微博最近有啥熱門話題淘寶京東上某商品價格變動郵箱通知女/男神最新動態(tài)誰點贊最活躍BBS搶沙發(fā)社交網(wǎng)絡(luò)分析. 第4頁,共69頁。引言 爬蟲能做什么一句話,只要瀏覽器有的,你都可以抓可以爬第5頁,共69頁。引言 爬蟲好學嗎?from math import powYouJoinUs = is:TrueIf YouJoinUsis: result = pow(1.01,365) print(result)37.7834簡單的道理第6頁,共69頁。目錄

3、一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第7頁,共69頁。爬蟲工作原理藍色線條:發(fā)起請求 (request)紅色線條:返回響應(yīng)(response)第8頁,共69頁。HTML標簽訪問Python中文社區(qū)https:/zimei返回HTML文件如下:瀏覽器顯示效果第9頁,

4、共69頁。Python基本知識基本數(shù)據(jù)類型(str,list,tuple,set,dict)循環(huán)語句 (for循環(huán))條件語句 (if else while)表達式 (如age = 20)第10頁,共69頁。字符串str字符串:單(雙、三)引號及其夾住的字符String = 我叫鄧旭東String2:5 鄧旭東第11頁,共69頁。列表list1, 2, 3, 4, 51, 2, 3, 4, 5a, b, c, d(1,2),(1,2)列表中的元素可以是字符串,數(shù)字,元組,字典,集合下面的寫法是不對的a, b, c (除非a,b, c是變量)第12頁,共69頁。元組tuple(1,2,3,4)(1

5、, 2, 3, 4) (a, b, c, d)第13頁,共69頁。集合seta, b, c集合是不重復(fù)的元素組成的一個基本數(shù)據(jù)類型。第14頁,共69頁。字典dictDict = name: 鄧旭東, age: 26, gender: male在大括號中,數(shù)據(jù)成對存儲,冒號左邊是鍵(key),冒號右邊是值(value)Dictage26第15頁,共69頁。for循環(huán)for x in 1, 2, 3: print(x)123第16頁,共69頁。目錄 一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何

6、解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第17頁,共69頁。找規(guī)律構(gòu)建url通過點擊翻看同一個目錄下的多個頁面,發(fā)現(xiàn)規(guī)律,定制url第18頁,共69頁。發(fā)現(xiàn)規(guī)律定制url第19頁,共69頁。發(fā)現(xiàn)規(guī)律定制url這里的url規(guī)律是頁碼數(shù)減1后乘以20第20頁,共69頁。構(gòu)建網(wǎng)址Base_url = /tag?start=numfor page in range(1,94,1): Num = page - 1 url =

7、 Base_url.format(num=Num*20) print(url)/tag?start=0/tag?start=20/tag?start=40第21頁,共69頁。requests庫Requests is an elegant and simple HTTP library for Python, built for human beings.Requests是一個優(yōu)雅簡潔的Python HTTP庫,給人類使用。第22頁,共69頁。requests常用方法最普通的訪問url = /u/1562c7f164r = requests.get(url)偽裝成瀏覽器的訪問Headers =

8、User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36r = requests.get(url,headers = Headers)第23頁,共69頁。requests常用方法使用cookie訪問Cookie = Cookie: UM_distinctid=15ab64ecfd6592-0afad5b368bd69-1d3b6853-13c680-15ab64ecfd7b6; remem

9、ber_user_token=W1sxMjEzMTM3XSwiJDJhJDEwJHhjYklYOGl2eTQ0Yi54WC5seVh2UWUiLCIxNDg5ODI2OTgwLjg4ODQyODciXQ%3D%3D-ac835770a030c0595b2993289e39c37d82ea27e2; CNZZDATA1258679142=559069578-1488626597-https%253A%252F%252F%252F%7C1489923851r = requests.get(url, cookies=cookies)第24頁,共69頁。requests常用方法 r.text u“re

10、pository”:“open_issues”:0,“url”:“/.#返回請求的狀態(tài)r.status_code #(4開頭客戶端問題,5開頭服務(wù)器問題)200 第25頁,共69頁。目錄 一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第26頁,共69頁。如何解析網(wǎng)頁火狐Fi

11、rebug/谷歌的開發(fā)者工具BeaufifulSoup/re庫第27頁,共69頁。Python基本知識第28頁,共69頁。BeautifulSoupbsObj = BeautifulSoup(html, “html.parser”)格式化輸出bsObj對象的內(nèi)容4567891011html = The Dormouses storyThe Dormouses storyOnce upon a time there were three little sisters; and their names were,Lacie andTillie;and they lived at the botto

12、m of a well.兩種主要的對象: Tag、NavigableString第29頁,共69頁。tag對象bsObj.titleThe Dormouses storybsObj.headThe Dormouses storybsObj.a注意:它查找的是在所有內(nèi)容中的第一個符合要求的標簽,如果要查詢所有的標簽,這種方法不奏效第30頁,共69頁。BeautifulSoup 遍歷文檔樹#直接子節(jié)點 .contentsbsObj.head.contents #輸出的為列表The Dormouses storybsObj.head.contents0 從列表中取出子節(jié)點The Dormouses

13、story第31頁,共69頁。BeautifulSoup 遍歷文檔樹#直接子節(jié)點 .childrenbsObj.head.children #返回生成器,可以迭代取出來 for child in soup.body.children: print child The Dormouses storyOnce upon a time there were three little sisters; and their names wereLacie andTillieand they lived at the bottom of a well.第32頁,共69頁。Tag對象#Attrs The D

14、ormouses storybsObj.p.attrs class: title, name: dromousebsObj.p. attrs classtitlebsObi.p.attrs.get(class)title第33頁,共69頁。NavigableString對象#獲取標簽內(nèi)部的文字bsObj.p.stringThe Dormouses story第34頁,共69頁。find /find_allfind_all(name , attrs) 得到的所有符合條件的結(jié)果,返回的是列表格式bsObj.findall(a), Lacie, TilliebsObj.findall(a, href

15、: /elsie)第35頁,共69頁。find(name , attrs) 只返回第一個符合條件的結(jié)果,所以soup.find()后面可以直接接.text或者get_text()來獲得標簽中的文本。bsObj.findall(a)第36頁,共69頁。re庫-正則表達式html = 我叫鄧旭東 今年 27歲 BeautifulSoup獲取html文件中的鄧旭東和27,需要這樣bsObj=BeautifulSoup(html, html.parser) Contents = bsObj.findall(span)Contents0我叫鄧旭東 Contents0.string我叫鄧旭東Content

16、s0.string2:鄧旭東Contents1今年27歲Contents1.string今年27歲Contents1.string2:-227第37頁,共69頁。re庫-正則表達式在爬蟲的應(yīng)用html = 我叫鄧旭東 今年 27歲 Import repattern = pile(r 我叫(.*?) 今年 (.*?)歲 )result = re.findall(pattern, html)result(鄧旭東,27)第38頁,共69頁。re 正則表達式常用匹配規(guī)則. 匹配任意字符(“n”除外) a.c abcd 數(shù)字0-9 adc a1c * 匹配前一個字符的0或無限次 ab* c ac或abc

17、 或abbc+ 匹配前一個字符的1或無限次 ab+ c abc 或abbc? 匹配前一個字符0或1次 abc? ab或abc第39頁,共69頁。re庫方法pattern = pile(string)#以下為匹配所用函數(shù)re.findall(pattern, string) 返回列表re.match(pattern, string) 從string的開頭匹配,匹配成功立即返回pattern的內(nèi)容, 不再匹配string剩余部分re.search(pattern, string) 從string全部匹配,如果匹配不成功返回none, 匹配成功返回一個或多個匹配內(nèi)容re.split(pattern,

18、 string) re.sub(pattern, repl, string)第40頁,共69頁。目錄 一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第41頁,共69頁。for語句用來循環(huán),重復(fù)爬蟲動作1、遍歷網(wǎng)址,依次對網(wǎng)址發(fā)送請求2、解析網(wǎng)頁時,返回的是列表或生成器的對象,

19、 通過for遍歷對象中的元素并對每個元素進行操作第42頁,共69頁。if條件判斷語句用來解決爬蟲過程中哪些要,哪些不要的問題 哪些執(zhí)行,哪些不執(zhí)行的問題第43頁,共69頁。try。Except異常處理。情景:你設(shè)計的程序在完美情況下當然不會出錯,但現(xiàn)實是經(jīng)常有意外出現(xiàn),一遇到問題就程序就退出運行。解決辦法:try except異常處理,增強你爬蟲的健壯性,解決遇到問題程序停止第44頁,共69頁。數(shù)據(jù)存儲初級的爬蟲,大多都是為了獲得文本數(shù)據(jù),只需要用csv 、txt文件存儲即可import csvcsvFile = open(/apple/usr/python/data.csv,a+,newli

20、ne=,encoding=utf-8)writer = csv.writer(csvFile)writer.writerow(colum1,colum2,colum3)writer.writerow(colum1,colum2,colum3)csvFile.close()第45頁,共69頁。數(shù)據(jù)存儲f = open(/apple/usr/python/data.txt,a+, encoding=utf-8)f.write(sssss)f.close也可以使用:with open(/apple/usr/python/data.txt,a+, encoding=utf-8) as f: f.wri

21、te(sssss)第46頁,共69頁。開始采集數(shù)據(jù)第47頁,共69頁。目錄 一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第48頁,共69頁。如何應(yīng)對反爬第49頁,共69頁。偽裝成瀏覽器第50頁,共69頁??刂圃L問頻率 第51頁,共69頁。使用代理IP第52頁,共69頁。目錄

22、 一、引言三、網(wǎng)頁請求四、網(wǎng)頁解析五、開始采集六、如何應(yīng)對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構(gòu)建urlrequests庫如何解析網(wǎng)頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數(shù)據(jù)存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對動態(tài)網(wǎng)頁 二、準備知識第53頁,共69頁。什么是動態(tài)網(wǎng)頁第54頁,共69頁。第55頁,共69頁。selenium+Firefox(36版)Win/mac 火狐資源鏈接/s/1kUU2uCRSelenuim默認支持firefox瀏覽器,不需要再安裝瀏覽器驅(qū)動。selenium對火狐瀏覽器新版本支持不好,經(jīng)常無法自動化操作。經(jīng)測試36版本,完美運行。第56頁,共69頁。Selenium基本知識from selenium import webdriverfrom bs4 import BeautifulSoup初始化瀏覽器driver = webdriver.Firefox()打開某個網(wǎng)址driver.get(url)第57頁,共69頁。Seleni

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論