版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章Python網(wǎng)絡(luò)爬蟲《Python數(shù)據(jù)分析與應(yīng)用》網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲(WebSpider),又被稱為網(wǎng)頁蜘蛛或網(wǎng)絡(luò)機(jī)器人,通過一定的規(guī)則自動(dòng)地抓取網(wǎng)絡(luò)信息。網(wǎng)絡(luò)爬蟲就是根據(jù)網(wǎng)址獲取網(wǎng)頁信息。例如,當(dāng)輸入網(wǎng)址:/,瀏覽器向DNS服務(wù)器發(fā)出請(qǐng)求,經(jīng)過解析,將發(fā)送給瀏覽器的HTML、JS、CSS等文件解析出來,便成了百度內(nèi)容。爬蟲流程爬取
Python提供了requests等庫實(shí)現(xiàn)HTTP請(qǐng)求操作,獲取網(wǎng)頁的源代碼。
Requests
方法解釋requests.get()獲取html的主要方法requests.head()獲取html頭部信息的主要方法requests.post()向html網(wǎng)頁提交post請(qǐng)求的方法requests.put()向html網(wǎng)頁提交put請(qǐng)求的方法requests.patch()向html提交局部修改的請(qǐng)求requests.delete()向html提交刪除請(qǐng)求Requests
importrequestsr=requests.get(url='http://www……')#GET請(qǐng)求print(r.status_code)#獲取返回狀態(tài)print(r.url)print(r.text)#打印解碼后的返回?cái)?shù)據(jù)解析從網(wǎng)頁源代碼中提取有用的信息。方法1:采用正則表達(dá)式提取,但是在構(gòu)造正則表達(dá)式時(shí)比較復(fù)雜且容易出錯(cuò)。方法2:由于網(wǎng)頁的結(jié)構(gòu)有一定的規(guī)則,可以利用BeautifulSoup、pyquery、lxml等庫提取網(wǎng)頁節(jié)點(diǎn)屬性、CSS選擇器等網(wǎng)頁信息。
存儲(chǔ)將提取到的數(shù)據(jù)保存到某處以便后續(xù)處理和分析,可以保存為TXT文本或JSON文本,也可以保存到MySQL和MongoDB等數(shù)據(jù)庫。正則表達(dá)式
正則表達(dá)式,又稱正規(guī)表示法、常規(guī)表示法,是指通過事先定義好的特定字符(“元字符”)組成的“規(guī)則字符串”,對(duì)字符串進(jìn)行過濾邏輯。凡是符合規(guī)則的字符串,認(rèn)為“匹配”,否則,不“匹配”。
正則表達(dá)式
采用正則表達(dá)式判斷一個(gè)字符串是否包含合法的Email,需要?jiǎng)?chuàng)建一個(gè)匹配Email的正則表達(dá)式,然后通過該正則表達(dá)式去判斷。正則表達(dá)式元字符含義輸入輸出.匹配任意字符
a.cAbc^匹配開始位置^abcAbc$匹配結(jié)束位置abc$Abc*
匹配前一個(gè)元字符0到多次abc*ab;abccc+匹配前一個(gè)元字符1到多次abc+abc;abccc?匹配前一個(gè)元字符0到1次abc?ab;abcre模塊fIndall()compile()match()search()replace()split()Python中的re模塊提供了一個(gè)正則表達(dá)式引擎接口,允許將正則表達(dá)式編譯成模式對(duì)象,通過這些模式對(duì)象執(zhí)行模式匹配搜索和字符串分割、子串替換等操作。Findall()>>>importre>>>p=pile(r'\d+')>>>print(p.findall('o1n2m3k4'))['1','2','3','4']search()>>>importre>>>a="123abc456">>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0))123abc456>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1))123>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2))abc>>>print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3))456Match()>>>importre>>>print(re.match('www','').span())#在起始位置匹配(0,3)>>>print(re.match('com',''))#不在起始位置匹配Nonesplit()1)只傳一個(gè)參數(shù),默認(rèn)分割整個(gè)字符串>>>str="a,b,c,d,e";>>>str.split(',');["a","b","c","d","e"]split()2)傳入兩個(gè)參數(shù),返回限定長度的字符串>>>str="a,b,c,d,e";>>>str.split(',',3);["a","b","c"]
split()3)使用正則表達(dá)式匹配,返回分割的字符串>>>str="aa44bb55cc66dd";>>>print(re.split('\d+',str))["aa","bb","cc","dd"]BeautifulSouplxml作為BeautifulSoup庫解析器BeautifulSoup
BeautifulSoup將HTML文檔轉(zhuǎn)換成一個(gè)復(fù)雜的樹形結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都是Python對(duì)象BeautifulSoupfromurllib.requestimporturlopenfrombs4importBeautifulSoup#導(dǎo)入BeautifulSoup對(duì)象html=urlopen('/new100.html')#打開url,獲取html內(nèi)容bs_obj=BeautifulSoup(html.read(),'html.parser')#把html內(nèi)容傳到BeautifulSoup對(duì)象
text_list=bs_obj.find_all("a","navmore")#找到”class=navmore”的a標(biāo)簽fortextintext_list:print(text.get_text())#打印標(biāo)簽的文本html.close()#關(guān)閉文件動(dòng)態(tài)網(wǎng)頁的內(nèi)容由JavaScript動(dòng)態(tài)加載生成,而Request模塊不能執(zhí)行JS和CSS代碼。一般采用Selenium抓取動(dòng)態(tài)網(wǎng)頁的數(shù)據(jù),Selenium最初是Web的測試工具,可以操作瀏覽器,像BeautifulSoup一樣得到html頁面元素。SeleniumSeleniumphantomjs不同的瀏覽器,如IE、Chrome、Firefox等,WebDriver需要不同的驅(qū)動(dòng)來實(shí)現(xiàn)。
在Firefox瀏覽器webdriver驅(qū)動(dòng)下載網(wǎng)址/mozilla/geckodriver/releases,下載geckodriver.exe文件。
Selenium Scrapy是Python開發(fā)的抓取框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。在anacondaPrompt下使用命令:pipinstallScrapy進(jìn)行安裝爬蟲框架ScrapyScrapy是爬取網(wǎng)站數(shù)據(jù)的應(yīng)用框架,可以進(jìn)行定制化爬取。爬蟲框架Scrapy爬取網(wǎng)站數(shù)據(jù)的應(yīng)用框架,可以進(jìn)行定制化爬取。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版商品購銷合同
- 2025年度貨場租賃及市場開發(fā)合同3篇
- 安新縣初中中考數(shù)學(xué)試卷
- 中山項(xiàng)目文化墻施工方案
- 2025年牛津上海版四年級(jí)語文下冊(cè)月考試卷
- 2025年北師大新版七年級(jí)英語上冊(cè)階段測試試卷含答案
- 2025年岳麓版七年級(jí)歷史上冊(cè)階段測試試卷含答案
- 2025年度茶餐廳試用期廚師助理聘用合同3篇
- 2024版新教師入職導(dǎo)師培養(yǎng)合同版B版
- 經(jīng)濟(jì)在線課程設(shè)計(jì)
- EGD殺生劑劑化學(xué)品安全技術(shù)說明(MSDS)zj
- GB/T 23858-2009檢查井蓋
- 超分子化學(xué)-第三章 陰離子的絡(luò)合主體
- 2023年吉林電力股份有限公司招聘筆試題庫及答案解析
- 皮帶崗位題庫解讀
- 食品企業(yè)產(chǎn)品出廠檢驗(yàn)報(bào)告
- 鍋爐本體水壓試驗(yàn)記錄
- 綜治工作中心信訪穩(wěn)定和矛盾糾紛排查化解工作流程圖
- 牛初乳知識(shí)課件
- 鼻出血鼻孔填塞-臨床實(shí)踐能力訓(xùn)練考核標(biāo)準(zhǔn)
- 初中中考英語總復(fù)習(xí)《代詞動(dòng)詞連詞數(shù)詞》思維導(dǎo)圖
評(píng)論
0/150
提交評(píng)論