本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
1
寫在前面的話
之前給大家寫了那么多的爬蟲案例,今天來給大家講講大部分網站反爬蟲的一些措施以及我們如何去突破他們得反爬蟲!當然這次有點標題黨,技術是日益進步的,反爬蟲技術也是如此,所以看這一篇文章當然是不夠的,這個也需要大家后期的不斷進階學習(JAP君也是),廢話不多說了!直接進入主題吧!
2
有些啥反爬蟲措施?
其實我們寫爬蟲最頭疼的事情就是反爬蟲措施了,我們想要去突破它,必然要先充分了解它們,我們來看下到底有哪些反爬蟲措施吧!
最常見的基于Headers的反爬蟲:相信這個大家應該都是耳熟能詳的,我們每次寫爬蟲基本上都會寫headers,因為大部分的網站都會對Headers中的User-Agent以及Referer欄位進行檢測,這個突破起來應該是比較容易的,我們直接根據瀏覽器正常訪問時的請求頭對爬蟲的請求頭進行修改,和瀏覽器的相同即可,
headers = {‘User-Agent’:'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36} rs=requests.get(‘http://jianshu.com’)
根據用戶行為的反爬蟲:這個反爬蟲措施真的是讓人頭疼,具體是啥呢?舉個栗子,同一個IP短時間內頻繁的去訪問同一個頁面,或者你就是對網站有一些程式化的操作(固定時間間隔去訪問頁面)更加接地氣的說就是看起來不像是正常人類在操作,這個問題怎么去解決呢?①既然一個ip不能頻繁訪問,那我就弄一大堆ip不就行了,所以我們可以通過大量的ip代理進行繞過,②我們訪問的時候可以將間隔的時間換成一個隨機的數字,盡可能的去模仿正常人的操作,
proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.11:1080",
}
requests.get(url, proxies=proxies)
- 基于驗證碼的反爬蟲:其實驗證碼也是一種反爬蟲的措施,現在的驗證碼相信大家也都見識過了,什么算數啊,滑動啊,按照順序點擊字啊等等,千奇百怪,其實像這種驗證碼的防爬蟲措施是有點棘手的,這里的話幾句話也說不完(涉及到機器學習或者也可以使用打碼平臺),大家可以先了解一下這種反爬蟲措施,到時候我會寫一篇有關于突破驗證碼的文章,
- 動態頁面的反爬蟲:這種技術應該還是比較常見的,動態頁面是啥呢?像我們在html上抓取資料,那是屬于靜態頁面的資料,非常的簡單,但是想動態頁面的話就無法直接從頁面上獲取資料,而是會涉及到Ajax技術,所以我們需要分析Ajax請求,然后模擬發送獲取到資料,但是目前很多網站不會那么輕易的讓你模擬發送資料出去,所以目前我們需要通過selenium+phaantomJS技術來進行突破!這個我們日后會講,
- 基于登錄的反爬蟲:像有些網站就比較摳了,必須要注冊登錄之后才能看到里面的內容,所以這也是個問題,但是這個也并不是特別難,只要你有足夠的耐心多去注冊幾個賬號,然后去登錄獲取到它們的cookie,然后通過這些cookie去訪問登錄即可
3
總結
上面的大概就是目前很常見的一些反爬蟲措施,我在上面也提供了一些解決的方法和思路,當然每個網站的爬取是不一樣的,這也是爬蟲最吸引人的地方,不斷地給我們挑戰,我們也需要不斷地去突破它,所以大家可以通過上面的一些方法去突破這些限制,當然技術肯定不止僅限于我所講的,我也只是提供一些大眾的思維,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237429.html
標籤:Python
