python爬蟲(chóng)入門(mén)課件_第1頁(yè)
python爬蟲(chóng)入門(mén)課件_第2頁(yè)
python爬蟲(chóng)入門(mén)課件_第3頁(yè)
python爬蟲(chóng)入門(mén)課件_第4頁(yè)
python爬蟲(chóng)入門(mén)課件_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、解析網(wǎng)頁(yè)BeautifulSoup re庫(kù)的使用條件、循環(huán)語(yǔ)句 try。Except異常處理。 數(shù)據(jù)存儲(chǔ) 控制訪問(wèn)頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對(duì)動(dòng)態(tài)網(wǎng)頁(yè) 二、準(zhǔn)備知識(shí)第17頁(yè),共69頁(yè)。找規(guī)律構(gòu)建url通過(guò)點(diǎn)擊翻看同一個(gè)目錄下的多個(gè)頁(yè)面,發(fā)現(xiàn)規(guī)律,定制url第18頁(yè),共69頁(yè)。發(fā)現(xiàn)規(guī)律定制url第19頁(yè),共69頁(yè)。發(fā)現(xiàn)規(guī)律定制url這里的url規(guī)律是頁(yè)碼數(shù)減1后乘以20第20頁(yè),共69頁(yè)。構(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頁(yè),共69頁(yè)。requests庫(kù)Requests is an elegant and simple HTTP library for Python, built for human beings.Requests是一個(gè)優(yōu)雅簡(jiǎn)潔的Python HTTP庫(kù),給人類(lèi)使用。第22頁(yè),共69頁(yè)。requests常用方法最普通的訪問(wèn)url = /u/1562c7f164r = requests.get(url)偽裝成瀏覽器的訪問(wèn)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頁(yè),共69頁(yè)。requests常用方法使用cookie訪問(wèn)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頁(yè),共69頁(yè)。requests常用方法 r.text u“re

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

11、rebug/谷歌的開(kāi)發(fā)者工具BeaufifulSoup/re庫(kù)第27頁(yè),共69頁(yè)。Python基本知識(shí)第28頁(yè),共69頁(yè)。BeautifulSoupbsObj = BeautifulSoup(html, “html.parser”)格式化輸出bsObj對(duì)象的內(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.兩種主要的對(duì)象: Tag、NavigableString第29頁(yè),共69頁(yè)。tag對(duì)象bsObj.titleThe Dormouses storybsObj.headThe Dormouses storybsObj.a注意:它查找的是在所有內(nèi)容中的第一個(gè)符合要求的標(biāo)簽,如果要查詢(xún)所有的標(biāo)簽,這種方法不奏效第30頁(yè),共69頁(yè)。BeautifulSoup 遍歷文檔樹(shù)#直接子節(jié)點(diǎn) .contentsbsObj.head.contents #輸出的為列表The Dormouses storybsObj.head.contents0 從列表中取出子節(jié)點(diǎn)The Dormouses

13、story第31頁(yè),共69頁(yè)。BeautifulSoup 遍歷文檔樹(shù)#直接子節(jié)點(diǎn) .childrenbsObj.head.children #返回生成器,可以迭代取出來(lái) 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頁(yè),共69頁(yè)。Tag對(duì)象#Attrs The D

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

15、: /elsie)第35頁(yè),共69頁(yè)。find(name , attrs) 只返回第一個(gè)符合條件的結(jié)果,所以soup.find()后面可以直接接.text或者get_text()來(lái)獲得標(biāo)簽中的文本。bsObj.findall(a)第36頁(yè),共69頁(yè)。re庫(kù)-正則表達(dá)式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頁(yè),共69頁(yè)。re庫(kù)-正則表達(dá)式在爬蟲(chóng)的應(yīng)用html = 我叫鄧旭東 今年 27歲 Import repattern = pile(r 我叫(.*?) 今年 (.*?)歲 )result = re.findall(pattern, html)result(鄧旭東,27)第38頁(yè),共69頁(yè)。re 正則表達(dá)式常用匹配規(guī)則. 匹配任意字符(“n”除外) a.c abcd 數(shù)字0-9 adc a1c * 匹配前一個(gè)字符的0或無(wú)限次 ab* c ac或abc

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

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

19、 通過(guò)for遍歷對(duì)象中的元素并對(duì)每個(gè)元素進(jìn)行操作第42頁(yè),共69頁(yè)。if條件判斷語(yǔ)句用來(lái)解決爬蟲(chóng)過(guò)程中哪些要,哪些不要的問(wèn)題 哪些執(zhí)行,哪些不執(zhí)行的問(wèn)題第43頁(yè),共69頁(yè)。try。Except異常處理。情景:你設(shè)計(jì)的程序在完美情況下當(dāng)然不會(huì)出錯(cuò),但現(xiàn)實(shí)是經(jīng)常有意外出現(xiàn),一遇到問(wèn)題就程序就退出運(yùn)行。解決辦法:try except異常處理,增強(qiáng)你爬蟲(chóng)的健壯性,解決遇到問(wèn)題程序停止第44頁(yè),共69頁(yè)。數(shù)據(jù)存儲(chǔ)初級(jí)的爬蟲(chóng),大多都是為了獲得文本數(shù)據(jù),只需要用csv 、txt文件存儲(chǔ)即可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頁(yè),共69頁(yè)。數(shù)據(jù)存儲(chǔ)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頁(yè),共69頁(yè)。開(kāi)始采集數(shù)據(jù)第47頁(yè),共69頁(yè)。目錄 一、引言三、網(wǎng)頁(yè)請(qǐng)求四、網(wǎng)頁(yè)解析五、開(kāi)始采集六、如何應(yīng)對(duì)反爬七、高級(jí)爬蟲(chóng)爬蟲(chóng)工作原理HTMLPython基本知識(shí)找規(guī)律構(gòu)建urlrequests庫(kù)如何解析網(wǎng)頁(yè)BeautifulSoup re庫(kù)的使用條件、循環(huán)語(yǔ)句 try。Except異常處理 數(shù)據(jù)存儲(chǔ) 控制訪問(wèn)頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應(yīng)對(duì)動(dòng)態(tài)網(wǎng)頁(yè) 二、準(zhǔn)備知識(shí)第48頁(yè),共69頁(yè)。如何應(yīng)對(duì)反爬第49頁(yè),共69頁(yè)。偽裝成瀏覽器第50頁(yè),共69頁(yè)??刂圃L問(wèn)頻率 第51頁(yè),共69頁(yè)。使用代理IP第52頁(yè),共69頁(yè)。目錄

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論