python爬取B關於爬蟲的學習資料_風聞
小白学大数据-2022-08-16 16:47
很多在學習python的小夥伴選擇學習軟件的時候大多都會有嗶哩嗶哩,嗶哩嗶哩大概是當下年輕人手機裏面的必備軟件之一。B站之所以火,是因為趣味與知識並存。它是一個重度宅腐二次元集結地。B站包含動漫、漫畫、遊戲,也有很多由繁到簡、五花八門的視頻,很多冷門的軟件和繪畫技巧在B站都可以找到完整的教學視頻。正如一句“你在B站看番,我在B站學習”,B站還是有一些質量比較好的學習視頻,那我們今天就利用python去分析下B上那些比較火的爬蟲學習視頻。
在獲取數據之前先對目標網站進行分析,https://search.bilibili.com/all?keyword=python&from,這裏我們主要是獲取關於python學習的視頻,所以通過爬蟲關鍵字找到到相關視頻,並且網站有反爬機制,反爬蟲是網站為了維護自己的核心安全而採取的抑制爬蟲的手段,反爬蟲的手段有很多種。比如爬蟲程序可能會在短時間內對指定的服務器發起高頻的請求。後台服務器對訪問進行統計,單位時間內同一IP訪問的次數超過一個特定的值,就會不同程度的禁封IP,導致無法進行爬蟲操作。這時我們就需要用到代理池,並設定延遲訪問。如何選擇代理IP,之前的文章有詳細的分享過,這裏我們為了節省時間就直接使用了由億牛雲提供的隧道IP,代理在爬蟲程序裏面的實現代碼示例如下:
#! -*- encoding:utf-8 -*-
import requests
import random
# 要訪問的目標頁面
targetUrl = “http://httpbin.org/ip"
# 要訪問的目標HTTPS頁面
# targetUrl = “https://httpbin.org/ip"
# 代理服務器(產品官網 www.16yun.cn)
proxyHost = “t.16yun.cn”
proxyPort = “31111”
# 代理驗證信息
proxyUser = “username”
proxyPass = “password”
proxyMeta = “http://%(user)s:%(pass)s@%(host)s:%(port)s” % {
“host” : proxyHost,
“port” : proxyPort,
“user” : proxyUser,
“pass” : proxyPass,
}
# 設置 http和https訪問都是用HTTP代理
proxies = {
“http” : proxyMeta,
“https” : proxyMeta,
}
# 設置IP切換頭
tunnel = random.randint(1,10000)
headers = {“Proxy-Tunnel”: str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text
目標網站的反爬機制比較多,而且會經常進行更新,所以我們在使用爬蟲獲取數據的過程中要隨時都關注到網站的反爬機制問題,並做出相應的調整和措施。若有收穫,就點個贊吧