爬蟲學習筆記2

2021-10-19 10:00:22 字數 1668 閱讀 8273

在爬取網頁資訊時有時會遇到有賬號資訊輸入的網頁,需要填入賬號密碼後跳轉才能進行爬取資訊,但我們常用的http協議是無狀態協議,它的問題在於即便在登陸面板登陸狀態成功,在你訪問個人主頁時是不會跳轉的因為伺服器預設你是新的請求而沒有登入狀態。

將html頁面中使用審查元素將本頁面的資料報解析後,在headers中的cookie值封裝到python中的header 字典中並同以往發起請求即可。但是這種方式是手動cookie鏈結,一般情況下並不採取這種方式進行解析。原因是手動獲取的cookie在網頁中有時是變化的,所以並不是通用方法。

自動處理:

在模擬登陸中 伺服器會建立乙個cookie

session 會話物件:

作用進行請求傳送

如果請求中產生了cookie,則該cookie會被自動儲存到session物件中

建立session物件 a=requests.session()

1.使用session物件進行模擬登陸post請求i的傳送session.post

2.session物件對個人主頁get請求進行傳送session.get

** :

在一般的網頁設計中,大型**會設計乙個反爬機制,最簡單的設計思路就是根據爬蟲本身就攜帶ip的原理,當某一固定ip的請求在一定時間內超過請求次數的閾值就會進行開啟措施。

–使用**伺服器 (ip偽裝) 在客戶端向**傳送請求時,使用**伺服器中轉這樣就將我們的ip偽裝。

作用:-1.可以訪問一些本身ip不能訪問的站點

3.可以隱藏真實ip免受攻擊

購買**ip的** 使用第三個是免費的

在requests請求中加入乙個引數proxies字典型別,協議型別為鍵 ip為值

**ip的匿名度:

透明:伺服器知道該次請求使用了**,也知道真實ip

匿名:知道使用了**不知道真實ip

高匿:均不知道

注:實際效果僅測試過一次,但效果與沒有引數沒太大區別,所以如果在實際應用中使用並未達到目的還是使用time。sleep進行爬取,雖然爬取時間長但一般情況下資料是不會丟失

可能是因為沒花錢原因,具體等待驗證

非同步爬蟲:

平時使用的爬取方式是每個網頁依次進行爬取,只有第乙個完成後才會進行下乙個

所以在請求函式呼叫時造成了阻塞

多執行緒(多程序)一般不建議因為當程序多時就會導致程式執行崩潰

好處:可以為相關阻塞單獨開啟執行緒,阻塞操作可以非同步進行

缺點:無法無限制開啟多執行緒或多程序

執行緒池,程序池(適當使用):

處理阻塞或者耗時的操作

好處:我們可以降低對系統對程序或執行緒建立的銷毀頻率,從而很好的降低系統開銷

弊端;池中程序或執行緒的數量有限

from multiprocessing.dummy import pool 匯入執行緒池

例項化執行緒池物件

pool=pool(x)為阻塞運算元量

pool.map()第乙個傳入會發生阻塞的方法或函式,第二個是乙個請求的列表物件,主要意思為map方法將列表物件中每個元素通過阻塞函式進行處理

map的返回值是函式的返回值

會將原本的時間減少,當執行緒物件過多時效果便不在明顯

在結束時使用pool.close()和pool.join()關閉程序池

python學習筆記(2) 初識爬蟲

資料抓取,從網際網路抓取想要的資料 資料爬蟲 網路蜘蛛。例如 1 https 協議 2 www.baidu.com 網域名稱 4 ie utf 8 wd e5 b0 8f e5 85 94 e5 ad 90 引數 明確需求 根據需求,尋找對應的web url 用python程式模擬瀏覽器去訪問對應的...

爬蟲筆記2

python原生基於網路請求的模組 作用 模擬瀏覽器傳送請求。功能強大,簡單,效率極高。使用流程 指定url 傳送請求 get瀏覽器 獲取響應資料 持久化儲存 pip install requests ide 用的是pycharm 演示上述步驟 import requests 指定url url w...

爬蟲學習(2)

設定header 偽裝 有些 沒有header裡面設定的身份是不會響應請求的,所以為了能響應請求,加入身份認證import urllib import urllib2 url user agent mozilla 4.0 compatible msie 5.5 windows nt 瀏覽器 身份認證...