欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python之常用反爬蟲措施和解決辦法的案例-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)服務(wù)項目包括武清網(wǎng)站建設(shè)、武清網(wǎng)站制作、武清網(wǎng)頁制作以及武清網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,武清網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到武清省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

小編給大家分享一下Python之常用反爬蟲措施和解決辦法的案例,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

一、UserAgent

UserAgent中文名為用戶代理,它使得服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本等信息。對于一些網(wǎng)站來說,它會檢查我們發(fā)送的請求中所攜帶的UserAgent字段,如果非瀏覽器,就會被識別為爬蟲,一旦被識別出來, 我們的爬蟲也就無法正常爬取數(shù)據(jù)了。這里先看一下在不設(shè)置UserAgent字段時該字段的值會是什么:

import requests
url = "http://www.baidu.com"
res = requests.get(url)

代碼很簡單,就是一個發(fā)送請求的代碼。運(yùn)行之前打開Fiddler,然后運(yùn)行代碼,在Fiddler中找到我們發(fā)送的請求,就可以看到有如下內(nèi)容:

Python之常用反爬蟲措施和解決辦法的案例

這時候我們的UserAgent字段的值就是python-requests/2.18.4,很顯然這不是一個瀏覽器的UserAgent,而這樣的UserAgent很容易就被識別出來,所以我們在編寫爬蟲的時候一定要注意添加UserAgent。然后對于一些網(wǎng)站,如果我們一直使用同一個UserAgent去訪問,頻率高了之后也會被ban掉,這個時候就需要使用隨機(jī)的UserAgent了。

解決辦法:

1.收集整理常見的UserAgent以供使用

ua_list = 
    ["Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) 
    Version/5.0.2 Mobile/8H7 Safari/6533.18.5",
    "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) 
    Version/5.0.2 Mobile/8H7 Safari/6533.18.5",
    "MQQBrowser/25 (Linux; U; 2.3.3; zh-cn; HTC Desire S Build/GRI40;480*800)",
    "Mozilla/5.0 (Linux; U; Android 2.3.3; zh-cn; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like 
    Gecko) Version/4.0 Mobile Safari/533.1",
    "Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) 
    AppleWebKit/413 (KHTML, like Gecko) Safari/413",
    "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8J2",
    "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari
    /535.1",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari
    /534.51.22",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile
    /9A5313e Safari/7534.48.3",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile
    /9A5313e Safari/7534.48.3",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile
    /9A5313e Safari/7534.48.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)",
    "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
    "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.
    0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 
    3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
    "Mozilla/4.0 (compatible; MSIE 60; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; 
    .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
    "Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)",
    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; 
    .NET CLR 3.5.21022; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari
    /533.21.1",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)"]

2.使用第三方庫--fake_useragent

使用方法如下:

from fake_useragent import UserAgent 
ua = UserAgent()
for i in range(3):
    print(ua.random)
# Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36
# Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
# Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0

二、IP

對于一些網(wǎng)站來說,如果某個IP在單位時間里的訪問次數(shù)超過了某個閾值,那么服務(wù)器就會ban掉這個IP了,它就會返回給你一些錯誤的數(shù)據(jù)。一般來說,當(dāng)我們的IP被ban了,我們的爬蟲也就無法正常獲取數(shù)據(jù)了,但是用瀏覽器還是可以正常訪問,但是如果用瀏覽器都無法訪問,那就真的GG了。很多網(wǎng)站都會對IP進(jìn)行檢測,比如知乎,如果單個IP訪問頻率過高就會被封掉。

解決辦法:

使用代理IP。網(wǎng)上有很多免費(fèi)代理和付費(fèi)代理可供選擇,免費(fèi)代理比如:西刺代理、快代理等等,付費(fèi)代理比如:代理云、阿布云等等。除此之外,我們還可以建一個屬于自己的代理池以供使用。

三、Referer防盜鏈

防盜鏈主要是針對客戶端請求過程中所攜帶的一些關(guān)鍵信息來驗證請求的合法性,而防盜鏈又有很多種,比如Referer防盜鏈、時間戳防盜鏈等等,這里只講Referer防盜鏈。Referer用于告知服務(wù)器該請求是從哪個頁面鏈接過來的,比如我們先打開少司命的百度百科:

Python之常用反爬蟲措施和解決辦法的案例

然后打開開發(fā)者工具,再查看右側(cè)的圖片,能找到如下內(nèi)容,這里Referer字段就表明我們是從什么頁面跳轉(zhuǎn)過去的:

Python之常用反爬蟲措施和解決辦法的案例

但是如果我們直接在瀏覽器中輸入url查看圖片的話,是沒有Referer的:

Python之常用反爬蟲措施和解決辦法的案例

這里本來有一個例子的,就是妹子圖:https://www.mzitu.com,不過現(xiàn)在無法訪問了。這個網(wǎng)站的圖片就使用了Referer防盜鏈,如果我們的爬蟲沒有攜帶符合要求的Referer字段,就會被識別出來。雖然我們請求的鏈接是沒有問題的,但是因為沒有Referer字段,它就不會把真正的圖片返回給我們。

解決辦法:

在請求頭headers中添加Referer字段以及相應(yīng)的值。

四、在html中動手腳

首先我不得不佩服那些前端工程師們,為了反爬蟲真是想了不少辦法,比如JS加密啊JS混淆啊,真是搞得人頭大。不過我們這里先說那些在html中動手腳的,比如加一些無意義的字符之類的,這樣即使我們能爬下來,得到的數(shù)據(jù)也是沒法使用的。比如部分微信公眾號的文章里會穿插一些亂七八糟的字符,這里用這篇文章作為例子:

Python之常用反爬蟲措施和解決辦法的案例

解決辦法:

可以看到每個字前面都加了一個span標(biāo)簽,span標(biāo)簽里加入了一個用于干擾的字符,而且有的還使用了strong標(biāo)簽,這就給我們的解析增加了難度。這里我使用的是lxml解析,解析完之后再對數(shù)據(jù)做一下清洗,完整代碼如下:

import requests
from lxml import etree 
url = "https://mp.weixin.qq.com/s?__biz=MzI0MDYwNjk2OA==&mid=2247484365&idx=4&sn=291a93e8a4ce6e90d3b6ef8b98fe09c4& 
chksm=e919085ade6e814cc037ecf6a873f22da0e492911a4e539e6f8fdeff022806b4d248c4d54194&scene=4"
res = requests.get(url)
et = etree.HTML(res.text)
lst = et.xpath('//*[@id="js_content"]/p//text()')
lst = [lst[i] for i in range(1, len(lst), 2)]
text = ''.join(lst)
print(text)

看完了這篇文章,相信你對Python之常用反爬蟲措施和解決辦法的案例有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前標(biāo)題:Python之常用反爬蟲措施和解決辦法的案例-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://www.chinadenli.net/article21/dcgdcd.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)關(guān)鍵詞優(yōu)化自適應(yīng)網(wǎng)站企業(yè)建站ChatGPT服務(wù)器托管

廣告

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

成都app開發(fā)公司