最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python爬蟲 urllib模塊反爬蟲機(jī)制UA詳解

 更新時(shí)間:2019年08月20日 09:35:07   作者:minger_lcm  
這篇文章主要介紹了python爬蟲 urllib模塊反爬蟲機(jī)制UA詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

方法: 使用urlencode函數(shù)

urllib.request.urlopen()

import urllib.request
import urllib.parse
url = 'https://www.sogou.com/web?'
#將get請(qǐng)求中url攜帶的參數(shù)封裝至字典中
param = {
  'query':'周杰倫'
}
#對(duì)url中的非ascii進(jìn)行編碼
param = urllib.parse.urlencode(param)
#將編碼后的數(shù)據(jù)值拼接回url中
url += param 
response = urllib.request.urlopen(url=url)
data = response.read()
with open('./周杰倫1.html','wb') as fp:
  fp.write(data)
print('寫入文件完畢')

開發(fā)者工具瀏覽器按F12或者右鍵按檢查 ,有個(gè)抓包工具network,刷新頁(yè)面,可以看到網(wǎng)頁(yè)資源,可以看到請(qǐng)求頭信息,UA

在抓包工具點(diǎn)擊任意請(qǐng)求,可以看到所有請(qǐng)求信息,向應(yīng)信息,

主要用到headers,response,response headers存放響應(yīng)頭信息,request headers 存放請(qǐng)求信息

反爬出機(jī)制:網(wǎng)站會(huì)檢查請(qǐng)求的UA,如果發(fā)現(xiàn)UA是爬蟲程序,會(huì)拒絕提供網(wǎng)站頁(yè)面數(shù)據(jù)。

如果網(wǎng)站檢查發(fā)現(xiàn)請(qǐng)求UA是基于某一款瀏覽器標(biāo)識(shí)(瀏覽器發(fā)起的請(qǐng)求),網(wǎng)站會(huì)認(rèn)為請(qǐng)求是正常請(qǐng)求,會(huì)把頁(yè)面數(shù)據(jù)響應(yīng)信息給客戶端

User-Agent(UA):請(qǐng)求載體的身份標(biāo)識(shí)

反反爬蟲機(jī)制:

偽造爬蟲程序的請(qǐng)求的UA,把爬蟲程序的請(qǐng)求UA偽造成谷歌標(biāo)識(shí),火狐標(biāo)識(shí)

通過自定義請(qǐng)求對(duì)象,用于偽裝爬蟲程序請(qǐng)求的身份。

User-Agent參數(shù),簡(jiǎn)稱為UA,該參數(shù)的作用是用于表明本次請(qǐng)求載體的身份標(biāo)識(shí)。如果我們通過瀏覽器發(fā)起的請(qǐng)求,則該請(qǐng)求的載體為當(dāng)前瀏覽器,則UA參數(shù)的值表明的是當(dāng)前瀏覽器的身份標(biāo)識(shí)表示的一串?dāng)?shù)據(jù)。

如果我們使用爬蟲程序發(fā)起的一個(gè)請(qǐng)求,則該請(qǐng)求的載體為爬蟲程序,那么該請(qǐng)求的UA為爬蟲程序的身份標(biāo)識(shí)表示的一串?dāng)?shù)據(jù)。

有些網(wǎng)站會(huì)通過辨別請(qǐng)求的UA來判別該請(qǐng)求的載體是否為爬蟲程序,如果為爬蟲程序,則不會(huì)給該請(qǐng)求返回響應(yīng),那么我們的爬蟲程序則也無法通過請(qǐng)求爬取到該網(wǎng)站中的數(shù)據(jù)值,這也是反爬蟲的一種初級(jí)技術(shù)手段。那么為了防止該問題的出現(xiàn),則我們可以給爬蟲程序的UA進(jìn)行偽裝,偽裝成某款瀏覽器的身份標(biāo)識(shí)。

上述案例中,我們是通過request模塊中的urlopen發(fā)起的請(qǐng)求,該請(qǐng)求對(duì)象為urllib中內(nèi)置的默認(rèn)請(qǐng)求對(duì)象,我們無法對(duì)其進(jìn)行UA進(jìn)行更改操作。urllib還為我們提供了一種自定義請(qǐng)求對(duì)象的方式,我們可以通過自定義請(qǐng)求對(duì)象的方式,給該請(qǐng)求對(duì)象中的UA進(jìn)行偽裝(更改)操作。

自定義請(qǐng)求頭信息字典可以添加谷歌瀏覽器的UA標(biāo)識(shí),自定義請(qǐng)求對(duì)象來偽裝成谷歌UA

1.封裝自定義的請(qǐng)求頭信息的字典,

2.注意:在headers字典中可以封裝任意的請(qǐng)求頭信息

3.將瀏覽器的UA數(shù)據(jù)獲取,封裝到一個(gè)字典中。該UA值可以通過抓包工具或者瀏覽器自帶的開發(fā)者工具中獲取某請(qǐng)求,
從中獲取UA的值

import urllib.request
import urllib.parse
url = 'https://www.sogou.com/web?query='
# url的特性:url不可以存在非ASCII編碼字符數(shù)據(jù)
word = urllib.parse.quote("周杰倫")
# 將編碼后的數(shù)據(jù)值拼接回url中
url = url+word # 有效url
# 發(fā)請(qǐng)求之前對(duì)請(qǐng)求的UA進(jìn)行偽造,偽造完再對(duì)請(qǐng)求url發(fā)起請(qǐng)求
# UA偽造
# 1 子制定一個(gè)請(qǐng)求對(duì)象,headers是請(qǐng)求頭信息,字典形式
# 封裝自定義的請(qǐng)求頭信息的字典,
# 注意:在headers字典中可以封裝任意的請(qǐng)求頭信息
headers = {
  # 存儲(chǔ)任意的請(qǐng)求頭信息
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
# 該請(qǐng)求對(duì)象的UA進(jìn)行了成功的偽裝
request = urllib.request.Request(url=url, headers=headers)
# 2.針對(duì)自定義請(qǐng)求對(duì)象發(fā)起請(qǐng)求
response = urllib.request.urlopen(request)
# 3.獲取響應(yīng)對(duì)象中的頁(yè)面數(shù)據(jù):read函數(shù)可以獲取響應(yīng)對(duì)象中存儲(chǔ)的頁(yè)面數(shù)據(jù)(byte類型的數(shù)據(jù)值)
page_text = response.read()
# 4.持久化存儲(chǔ):將爬取的頁(yè)面數(shù)據(jù)寫入文件進(jìn)行保存
with open("周杰倫.html","wb") as f:
  f.write(page_text)
print("寫入數(shù)據(jù)成功")

這樣就可以突破網(wǎng)站的反爬機(jī)制

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python的Django中django-userena組件的簡(jiǎn)單使用教程

    Python的Django中django-userena組件的簡(jiǎn)單使用教程

    這篇文章主要介紹了Python的Django中django-userena組件的簡(jiǎn)單使用教程,包括用戶登陸和注冊(cè)等簡(jiǎn)單功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-05-05
  • Python中csv文件的寫入與讀取方法例子

    Python中csv文件的寫入與讀取方法例子

    這篇文章主要給大家介紹了關(guān)于Python中csv文件的寫入與讀取方法的相關(guān)資料,csv是"Comma-Separated Values(逗號(hào)分割的值)"的首字母縮寫,它其實(shí)和txt文件一樣,都是純文本文件,使用Python來讀寫csv文件是非常容易的,需要的朋友可以參考下
    2023-09-09
  • 淺談python opencv對(duì)圖像顏色通道進(jìn)行加減操作溢出

    淺談python opencv對(duì)圖像顏色通道進(jìn)行加減操作溢出

    這篇文章主要介紹了淺談python opencv對(duì)圖像顏色通道進(jìn)行加減操作溢出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • PyCharm+Pipenv虛擬環(huán)境開發(fā)和依賴管理的教程詳解

    PyCharm+Pipenv虛擬環(huán)境開發(fā)和依賴管理的教程詳解

    這篇文章主要介紹了PyCharm+Pipenv虛擬環(huán)境作開發(fā)和依賴管理的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python 中的判斷語句,循環(huán)語句,函數(shù)

    Python 中的判斷語句,循環(huán)語句,函數(shù)

    這篇文章主要介紹了Python 中的判斷語句,循環(huán)語句,函數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • pycharm?終端部啟用虛擬環(huán)境詳情

    pycharm?終端部啟用虛擬環(huán)境詳情

    這篇文章主要介紹了pycharm?終端部啟用虛擬環(huán)境詳情,文章圍繞pycharm?終端部啟用虛擬環(huán)境商務(wù)相關(guān)資料展開全文章的詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2021-12-12
  • Python中高階函數(shù)的小實(shí)踐分享

    Python中高階函數(shù)的小實(shí)踐分享

    這篇文章主要為大家介紹了一些Python中高階函數(shù)的小實(shí)踐,文中的示例代碼講解詳細(xì),對(duì)我們深入學(xué)習(xí)Python有一定的幫助,需要的可以參考下
    2023-05-05
  • jupyter notebook 使用過程中python莫名崩潰的原因及解決方式

    jupyter notebook 使用過程中python莫名崩潰的原因及解決方式

    這篇文章主要介紹了jupyter notebook 使用過程中python莫名崩潰的原因及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 解決Python運(yùn)行文件出現(xiàn)out of memory框的問題

    解決Python運(yùn)行文件出現(xiàn)out of memory框的問題

    今天小編就為大家分享一篇解決Python運(yùn)行文件出現(xiàn)out of memory框的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python用海龜繪圖寫貪吃蛇游戲

    python用海龜繪圖寫貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了python用海龜繪圖寫貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論

济源市| 黄梅县| 临沧市| 沙雅县| 丰台区| 乌兰察布市| 微山县| 泸水县| 辽中县| 丰宁| 富蕴县| 故城县| 乌什县| 洛川县| 哈巴河县| 米林县| 广南县| 长垣县| 喀喇沁旗| 库车县| 长兴县| 昌吉市| 铜鼓县| 麻栗坡县| 揭东县| 东乌| 平阳县| 大厂| 瑞安市| 清水县| 德安县| 日喀则市| 法库县| 南安市| 正安县| 唐海县| 寿光市| 永川市| 安多县| 抚宁县| 岳普湖县|