亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python破解網站反爬蟲的方法有哪些

發布時間:2021-06-11 15:27:57 來源:億速云 閱讀:130 作者:小新 欄目:開發技術

小編給大家分享一下python破解網站反爬蟲的方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!


常見的反爬蟲機制有判別身份和IP限制兩種,下面我們將一一來進行介紹。

(一) 判別身份

首先我們看一個例子,看看到底什么時反爬蟲。
我們還是以 豆瓣電影榜top250(https://movie.douban.com/top250) 為例。`

import requests

# 豆瓣電影榜top250的網址
url = 'https://movie.douban.com/top250'
# 請求與網站的連接
res = requests.get(url)
# 打印獲取的文本
print(res.text)

這是段簡單的請求與網站連接并打印獲取數據的代碼,我們來看看它的運行結果。

python破解網站反爬蟲的方法有哪些

我們可以發現我們什么數據都沒有獲取到,這就是由于這個網站有它的身份識別功能,把我們識別為了爬蟲,拒絕為我們提供數據。不管是瀏覽器還是爬蟲訪問網站時都會帶上一些信息用于身份識別。而這些信息都被存儲在一個叫請求頭(request headers) 的地方。而這個請求頭中我們只需要了解其中的一個叫user-agent(用戶代理) 的就可以了。user-agent里包含了操作系統、瀏覽器類型、版本等信息,通過修改它我們就能成功地偽裝成瀏覽器。
下面我們來看怎么找這個user-agent吧。

首先得打開瀏覽器,隨便打開一個網站,再打開開發者工具。
再點擊network標簽,接著點第一個請求,再找到Request Headers,最后找到user-agent字段。(有時候可能點擊network標簽后是空白得,這時候刷新下網頁就好啦!)

python破解網站反爬蟲的方法有哪些

找到請求頭后,我們只需要把他放進一個字典里就好啦,具體操作見下面代碼。

import requests

# 復制剛才獲取得請求頭
headers = {
  'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
# 豆瓣電影榜top250的網址
url = 'https://movie.douban.com/top250'
# 請求與網站的連接
res = requests.get(url, headers=headers)
# 打印獲取的文本
print(res.text)

現在我們再來看部分輸出結果。

python破解網站反爬蟲的方法有哪些

我們可以發現已經將該網站的HTML文件全部爬取到了,至此第一種方法就將完成了。下面我們來看第二種方法。

(二) IP限制

IP(Internet Protocol) 全稱互聯網協議地址,意思是分配給用戶上網使用的網際協議的設備的數字標簽。它就像我們身份證號一樣,只要知道你的身份證號就能查出你是哪個人。
當我們爬取大量數據時,如果我們不加以節制地訪問目標網站,會使網站超負荷運轉,一些個人小網站沒什么反爬蟲措施可能因此癱瘓。而大網站一般會限制你的訪問頻率,因為正常人是不會在 1s 內訪問幾十次甚至上百次網站的。所以,如果你訪問過于頻繁,即使改了 user-agent 偽裝成瀏覽器了,也還是會被識別為爬蟲,并限制你的 IP 訪問該網站。
因此,我們常常使用 time.sleep() 來降低訪問的頻率,比如上一篇博客中的爬取整個網站的代碼,我們每爬取一個網頁就暫停一秒。

import requests
import time
from bs4 import BeautifulSoup

# 將獲取豆瓣電影數據的代碼封裝成函數
def get_douban_movie(url):
 # 設置反爬蟲的請求頭
 headers = {
 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
 }

 # 請求網站的連接
 res = requests.get('https://movie.douban.com/top250', headers=headers)
 # 將網站數據存到BeautifulSoup對象中
 soup = BeautifulSoup(res.text,'html.parser')
 # 爬取網站中所有標簽為'div',并且class='pl2'的數據存到Tag對象中
 items = soup.find_all('div', class_='hd')
 for i in items:
  # 再篩選出所有標簽為a的數據
  tag = i.find('a')
  # 只讀取第一個class='title'作為電影名
  name = tag.find(class_='title').text
  # 爬取書名對應的網址
  link = tag['href']
  print(name,link)

url = 'https://movie.douban.com/top250?start={}&filter='
# 將所有網址信息存到列表中
urls = [url.format(num*25) for num in range(10)]
for item in urls:
 get_douban_movie(item)
 # 暫停 1 秒防止訪問太快被封
 time.sleep(1)

部分運行結果:

python破解網站反爬蟲的方法有哪些

以上是“python破解網站反爬蟲的方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

星子县| 德庆县| 延津县| 绥芬河市| 含山县| 合川市| 正阳县| 滕州市| 金寨县| 屏东县| 平山县| 运城市| 延川县| 慈利县| 伊春市| 左贡县| 诸暨市| 同心县| 台前县| 鹤庆县| 佛学| 京山县| 剑阁县| 绥中县| 田林县| 图木舒克市| 阿尔山市| 栾川县| 桂阳县| 福泉市| 盈江县| 玛沁县| 华坪县| 水富县| 遂宁市| 竹溪县| 青浦区| 扶余县| 铜山县| 阿拉善盟| 大厂|