版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Python爬蟲快速入門中南大學 商學院鄧旭東第1頁,共69頁。自我介紹2009-2013 哈爾濱工業(yè)大學經濟管理學院2015-至今 中南大學商學院 主要研究方向為線上社群及消費者行為, 在學習研究過程中,習得了數據科學相關技術, 如數據采集、數據清理、數據規(guī)整、統計分析熟悉R、python、MongoDB。第2頁,共69頁。目錄二、準備知識一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTML+CSSPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數
2、據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 第3頁,共69頁。引言 爬蟲能做什么?微博最近有啥熱門話題淘寶京東上某商品價格變動郵箱通知女/男神最新動態(tài)誰點贊最活躍BBS搶沙發(fā)社交網絡分析. 第4頁,共69頁。引言 爬蟲能做什么一句話,只要瀏覽器有的,你都可以抓可以爬第5頁,共69頁。引言 爬蟲好學嗎?from math import powYouJoinUs = is:TrueIf YouJoinUsis: result = pow(1.01,365) print(result)37.7834簡單的道理第6頁,共69頁。目錄
3、一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第7頁,共69頁。爬蟲工作原理藍色線條:發(fā)起請求 (request)紅色線條:返回響應(response)第8頁,共69頁。HTML標簽訪問Python中文社區(qū)https:/zimei返回HTML文件如下:瀏覽器顯示效果第9頁,
4、共69頁。Python基本知識基本數據類型(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)列表中的元素可以是字符串,數字,元組,字典,集合下面的寫法是不對的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集合是不重復的元素組成的一個基本數據類型。第14頁,共69頁。字典dictDict = name: 鄧旭東, age: 26, gender: male在大括號中,數據成對存儲,冒號左邊是鍵(key),冒號右邊是值(value)Dictage26第15頁,共69頁。for循環(huán)for x in 1, 2, 3: print(x)123第16頁,共69頁。目錄 一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何
6、解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第17頁,共69頁。找規(guī)律構建url通過點擊翻看同一個目錄下的多個頁面,發(fā)現規(guī)律,定制url第18頁,共69頁。發(fā)現規(guī)律定制url第19頁,共69頁。發(fā)現規(guī)律定制url這里的url規(guī)律是頁碼數減1后乘以20第20頁,共69頁。構建網址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開頭服務器問題)200 第25頁,共69頁。目錄 一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理。 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第26頁,共69頁。如何解析網頁火狐Fi
11、rebug/谷歌的開發(fā)者工具BeaufifulSoup/re庫第27頁,共69頁。Python基本知識第28頁,共69頁。BeautifulSoupbsObj = BeautifulSoup(html, “html.parser”)格式化輸出bsObj對象的內容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注意:它查找的是在所有內容中的第一個符合要求的標簽,如果要查詢所有的標簽,這種方法不奏效第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對象#獲取標簽內部的文字bsObj.p.stringThe Dormouses story第34頁,共69頁。find /find_allfind_all(name , attrs) 得到的所有符合條件的結果,返回的是列表格式bsObj.findall(a), Lacie, TilliebsObj.findall(a, href
15、: /elsie)第35頁,共69頁。find(name , attrs) 只返回第一個符合條件的結果,所以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庫-正則表達式在爬蟲的應用html = 我叫鄧旭東 今年 27歲 Import repattern = pile(r 我叫(.*?) 今年 (.*?)歲 )result = re.findall(pattern, html)result(鄧旭東,27)第38頁,共69頁。re 正則表達式常用匹配規(guī)則. 匹配任意字符(“n”除外) a.c abcd 數字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)#以下為匹配所用函數re.findall(pattern, string) 返回列表re.match(pattern, string) 從string的開頭匹配,匹配成功立即返回pattern的內容, 不再匹配string剩余部分re.search(pattern, string) 從string全部匹配,如果匹配不成功返回none, 匹配成功返回一個或多個匹配內容re.split(pattern,
18、 string) re.sub(pattern, repl, string)第40頁,共69頁。目錄 一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第41頁,共69頁。for語句用來循環(huán),重復爬蟲動作1、遍歷網址,依次對網址發(fā)送請求2、解析網頁時,返回的是列表或生成器的對象,
19、 通過for遍歷對象中的元素并對每個元素進行操作第42頁,共69頁。if條件判斷語句用來解決爬蟲過程中哪些要,哪些不要的問題 哪些執(zhí)行,哪些不執(zhí)行的問題第43頁,共69頁。try。Except異常處理。情景:你設計的程序在完美情況下當然不會出錯,但現實是經常有意外出現,一遇到問題就程序就退出運行。解決辦法:try except異常處理,增強你爬蟲的健壯性,解決遇到問題程序停止第44頁,共69頁。數據存儲初級的爬蟲,大多都是為了獲得文本數據,只需要用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頁。數據存儲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頁。開始采集數據第47頁,共69頁。目錄 一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第48頁,共69頁。如何應對反爬第49頁,共69頁。偽裝成瀏覽器第50頁,共69頁??刂圃L問頻率 第51頁,共69頁。使用代理IP第52頁,共69頁。目錄
22、 一、引言三、網頁請求四、網頁解析五、開始采集六、如何應對反爬七、高級爬蟲爬蟲工作原理HTMLPython基本知識找規(guī)律構建urlrequests庫如何解析網頁BeautifulSoup re庫的使用條件、循環(huán)語句 try。Except異常處理 數據存儲 控制訪問頻率 偽裝裝成瀏覽器 使用代理IPselenium+Firefox(36版) 抓包應對動態(tài)網頁 二、準備知識第53頁,共69頁。什么是動態(tài)網頁第54頁,共69頁。第55頁,共69頁。selenium+Firefox(36版)Win/mac 火狐資源鏈接/s/1kUU2uCRSelenuim默認支持firefox瀏覽器,不需要再安裝瀏覽器驅動。selenium對火狐瀏覽器新版本支持不好,經常無法自動化操作。經測試36版本,完美運行。第56頁,共69頁。Selenium基本知識from selenium import webdriverfrom bs4 import BeautifulSoup初始化瀏覽器driver = webdriver.Firefox()打開某個網址driver.get(url)第57頁,共69頁。Seleni
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護理標準化推進
- 外陰膿腫的護理查房
- 研究生個人實習總結報告5篇
- 客服規(guī)范管理
- 員工個人辭職申請書例文8篇
- 初中個人職業(yè)規(guī)劃
- 幼兒園家長感謝信模板合集十篇
- 采購員年度工作總結范文
- 消防安全知識宣傳演講稿【10篇】
- 雪景作文課件
- 聽歌曲猜歌名抖音熱歌120首
- 煙酒店合作經營合同
- 浙江省寧波市小升初數學試卷新版
- 資金托盤協議書
- 零星維修工程施工方案
- DZ∕T 0130.6-2006 地質礦產實驗室測試質量管理規(guī)范 第6部分:水樣分析(正式版)
- 倉庫管理教學總結與反思
- 2023年人教版八年級地理(上冊)期末試卷及答案(各版本)
- MOOC 中國電影經典影片鑒賞-北京師范大學 中國大學慕課答案
- 壓力性損傷治療護理新進展
- 大疆機場2操作白皮書
評論
0/150
提交評論