bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

爬蟲(chóng)之request模塊-創(chuàng)新互聯(lián)

一爬蟲(chóng)簡(jiǎn)介

成都創(chuàng)新互聯(lián)公司成立于2013年,先為翠屏等服務(wù)建站,翠屏等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為翠屏企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

概述

近年來(lái),隨著網(wǎng)絡(luò)應(yīng)用的逐漸擴(kuò)展和深入,如何高效的獲取網(wǎng)上數(shù)據(jù)成為了無(wú)數(shù)公司和個(gè)人的追求,在大數(shù)據(jù)時(shí)代,誰(shuí)掌握了更多的數(shù)據(jù),誰(shuí)就可以獲得更高的利益,而網(wǎng)絡(luò)爬蟲(chóng)是其中最為常用的一種從網(wǎng)上爬取數(shù)據(jù)的手段。

網(wǎng)絡(luò)爬蟲(chóng),即Web Spider,是一個(gè)很形象的名字。如果把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來(lái)爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過(guò)網(wǎng)頁(yè)的鏈接地址來(lái)尋找網(wǎng)頁(yè)的。從網(wǎng)站某一個(gè)頁(yè)面(通常是首頁(yè))開(kāi)始,讀取網(wǎng)頁(yè)的內(nèi)容,找到在網(wǎng)頁(yè)中的其它鏈接地址,然后通過(guò)這些鏈接地址尋找下一個(gè)網(wǎng)頁(yè),這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁(yè)都抓取完為止。

爬蟲(chóng)的價(jià)值

互聯(lián)網(wǎng)中最有價(jià)值的便是數(shù)據(jù),比如天貓商城的商品信息,鏈家網(wǎng)的租房信息,雪球網(wǎng)的證券投資信息等等,這些數(shù)據(jù)都代表了各個(gè)行業(yè)的真金白銀,可以說(shuō),誰(shuí)掌握了行業(yè)內(nèi)的第一手?jǐn)?shù)據(jù),誰(shuí)就成了整個(gè)行業(yè)的主宰,如果把整個(gè)互聯(lián)網(wǎng)的數(shù)據(jù)比喻為一座寶藏,那我們的爬蟲(chóng)課程就是來(lái)教大家如何來(lái)高效地挖掘這些寶藏,掌握了爬蟲(chóng)技能, 你就成了所有互聯(lián)網(wǎng)信息公司幕后的老板,換言之,它們都在免費(fèi)為你提供有價(jià)值的數(shù)據(jù)。

robots.txt協(xié)議

如果自己的門(mén)戶(hù)網(wǎng)站中的指定頁(yè)面中的數(shù)據(jù)不想讓爬蟲(chóng)程序爬取到的話(huà),那么則可以通過(guò)編寫(xiě)一個(gè)robots.txt的協(xié)議文件來(lái)約束爬蟲(chóng)程序的數(shù)據(jù)爬取。robots協(xié)議的編寫(xiě)格式可以觀察淘寶網(wǎng)的robots(訪(fǎng)問(wèn)www.taobao.com/robots.txt即可)。但是需要注意的是,該協(xié)議只是相當(dāng)于口頭的協(xié)議,并沒(méi)有使用相關(guān)技術(shù)進(jìn)行強(qiáng)制管制,所以該協(xié)議是防君子不防小人。但是我們?cè)趯W(xué)習(xí)爬蟲(chóng)階段編寫(xiě)的爬蟲(chóng)程序可以先忽略robots協(xié)議。

爬蟲(chóng)的基本流程

1.發(fā)送請(qǐng)求:通過(guò)相關(guān)模塊或者庫(kù)如瀏覽器一般向目標(biāo)站點(diǎn)發(fā)送請(qǐng)求,即一個(gè)request,請(qǐng)求可以攜帶headers和參數(shù)等信息,然后等待服務(wù)器響應(yīng)。

2.獲取響應(yīng):服務(wù)器正常響應(yīng),會(huì)返回一個(gè)response,即頁(yè)面內(nèi)容,類(lèi)型可能是html,json或者二進(jìn)制數(shù)據(jù)(音頻視頻圖片等)

3.數(shù)據(jù)解析:響應(yīng)的字符串可以通過(guò)正則表達(dá)式或者beautifulSoup,xpath等解析器提煉出我們感興趣的數(shù)據(jù)

4.保存數(shù)據(jù):解析出的數(shù)據(jù)進(jìn)行保存,可以存儲(chǔ)到文件中,也可以存儲(chǔ)到redies,mongdb等數(shù)據(jù)庫(kù)中

二 requests模塊

Requests是用python語(yǔ)言基于urllib編寫(xiě)的,采用的是Apache2 Licensed開(kāi)源協(xié)議的HTTP庫(kù),Requests它會(huì)比urllib更加方便,可以節(jié)約我們大量的工作。一句話(huà),requests是python實(shí)現(xiàn)的最簡(jiǎn)單易用的HTTP庫(kù),建議爬蟲(chóng)使用requests庫(kù)。默認(rèn)安裝好python之后,是沒(méi)有安裝requests模塊的,需要單獨(dú)通過(guò)pip安裝

2.1 基本語(yǔ)法

requests模塊支持的請(qǐng)求

import requests requests.get("http://httpbin.org/get") requests.post("http://httpbin.org/post") requests.put("http://httpbin.org/put") requests.delete("http://httpbin.org/delete") requests.head("http://httpbin.org/get") requests.options("http://httpbin.org/get") 

get請(qǐng)求

1 基本請(qǐng)求

import requests response=requests.get('https://www.jd.com/',)   with open("jd.html","wb") as f:     f.write(response.content)

2 含參數(shù)請(qǐng)求

import requests response=requests.get('https://s.taobao.com/search?q=手機(jī)') response=requests.get('https://s.taobao.com/search',params={"q":"美女"})

3 含請(qǐng)求頭請(qǐng)求

import requests response=requests.get('https://dig.chouti.com/',              headers={                    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36',                          }                       )

4 含cookies請(qǐng)求

import uuid import requests url = 'http://httpbin.org/cookies' cookies = dict(sbid=str(uuid.uuid4())) res = requests.get(url, cookies=cookies) print(res.text)

post請(qǐng)求

1 data參數(shù)

requests.post()用法與requests.get()完全一致,特殊的是requests.post()多了一個(gè)data參數(shù),用來(lái)存放請(qǐng)求體數(shù)據(jù) response=requests.post("http://httpbin.org/post",params={"a":"666"}, data={"name":"ccj"})

2 發(fā)送json數(shù)據(jù)

import requests res1=requests.post(url='http://httpbin.org/post', data={'name':'ccj'}) #沒(méi)有指定請(qǐng)求頭,#默認(rèn)的請(qǐng)求頭:application/x-www-form-urlencoed print(res1.json())   res2=requests.post(url='http://httpbin.org/post',json={'age':"22",}) #默認(rèn)的請(qǐng)求頭:application/json print(res2.json())

response對(duì)象

(1) 常見(jiàn)屬性

import requests respone=requests.get('https://sh.lianjia.com/ershoufang/') # respone屬性 print(respone.text) print(respone.content) print(respone.status_code) print(respone.headers) print(respone.cookies) print(respone.cookies.get_dict()) print(respone.cookies.items()) print(respone.url) print(respone.history) print(respone.encoding)

(2) 編碼問(wèn)題

import requests response=requests.get('http://www.autohome.com/news') #response.encoding='gbk' #汽車(chē)之家網(wǎng)站返回的頁(yè)面內(nèi)容為gb2312編碼的,而requests的默認(rèn)編碼為ISO-8859-1,如果不設(shè)置成gbk則中文亂碼 with open("res.html","w") as f:     f.write(response.text)

(3) 下載二進(jìn)制文件(圖片,視頻,音頻)

import requests response=requests.get('https://cache.yisu.com/upload/information/20200217/57/4561.jpg') with open("res.png","wb") as f:     # f.write(response.content) # 比如下載視頻時(shí),如果視頻100G,用response.content然后一下子寫(xiě)到文件中是不合理的     for line in response.iter_content():         f.write(line)

(4) 解析json數(shù)據(jù)  

import requests import json   response=requests.get('http://httpbin.org/get') res1=json.loads(response.text) #太麻煩 res2=response.json() #直接獲取json數(shù)據(jù) print(res1==res2)

(5) Redirection and History

默認(rèn)情況下,除了 HEAD, Requests 會(huì)自動(dòng)處理所有重定向。可以使用響應(yīng)對(duì)象的 history 方法來(lái)追蹤重定向。Response.history 是一個(gè) Response 對(duì)象的列表,為了完成請(qǐng)求而創(chuàng)建了這些對(duì)象。這個(gè)對(duì)象列表按照從最老到最近的請(qǐng)求進(jìn)行排序。 >>> r = requests.get('http://github.com') >>> r.url 'https://github.com/' >>> r.status_code 200 >>> r.history [<Response [301]>]

另外,還可以通過(guò) allow_redirects 參數(shù)禁用重定向處理:

>>> r = requests.get('http://github.com', allow_redirects=False) >>> r.status_code 301 >>> r.history [] 

2.2 requests進(jìn)階用法

代理

一些網(wǎng)站會(huì)有相應(yīng)的反爬蟲(chóng)措施,例如很多網(wǎng)站會(huì)檢測(cè)某一段時(shí)間某個(gè)IP的訪(fǎng)問(wèn)次數(shù),如果訪(fǎng)問(wèn)頻率太快以至于看起來(lái)不像正常訪(fǎng)客,它可能就會(huì)會(huì)禁止這個(gè)IP的訪(fǎng)問(wèn)。所以我們需要設(shè)置一些代理服務(wù)器,每隔一段時(shí)間換一個(gè)代理,就算IP被禁止,依然可以換個(gè)IP繼續(xù)爬取。

res=requests.get('http://httpbin.org/ip', proxies={'http':'110.83.40.27:9999'}).json() print(res)

免費(fèi)代理

https://www.kuaidaili.com/free/

2.3 爬蟲(chóng)案例

github的home頁(yè)

import requests import re #第一步: 請(qǐng)求獲取token,以便通過(guò)post請(qǐng)求校驗(yàn) session=requests.session() res=session.get("https://github.com/login") authenticity_token=re.findall('name="authenticity_token" value="(.*?)"',res.text)[0] print(authenticity_token) # 第二步 構(gòu)建post請(qǐng)求數(shù)據(jù) data={     "login": "yuanchenqi0316@163.com",     "password":"yuanchenqi0316",     "commit": "Sign in",     "utf8": "?",     "authenticity_token": authenticity_token     } res=session.post("https://github.com/session",data=data,headers=headers,cookies=cookies) with open("github.html","wb") as f:     f.write(res.content)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱(chēng):爬蟲(chóng)之request模塊-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://vcdvsql.cn/article44/cdiehe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作電子商務(wù)品牌網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈虛擬主機(jī)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化