Python爬蟲筆記【一】模擬用戶訪問之設置請求頭 (1)


學習的課本為《python網絡數據采集》,大部分代碼來此此書。

  網絡爬蟲爬取數據首先就是要有爬取的權限,沒有爬取的權限再好的代碼也不能運行。所以首先要偽裝自己的爬蟲,讓爬蟲不像爬蟲而是像人一樣訪問網頁。廢話不多說開始偽裝。

  1.修改請求頭

  這里要用到python的requests的模塊,首相介紹一下http請求頭,它就是你每次在訪問網頁時,向服務器傳輸的一組屬性和配置信息。下面有七個字段被大多數瀏覽器用來初始化網絡請求。

屬性

內容
Host https://www.google.com/
Connection keep-alive
Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/39.0.2171.95 Safari/537.36
Referrer https://www.google.com/
Accept-Encoding gzip,deflate,sdch
Accept-Language en-US,en;q=0.8

這是用戶在訪問網頁時所發出的host請求(圖為書中作者的請求,打開F12可查看自己的host請求)。一下為不加請求頭時python爬蟲發出的請求。

Accept-Encoding identity
User-Agent

Python- urllib/3.4

用requests模塊可以對請求頭自定義。我們用下面的程序來采集這個網站的信息,驗證我們瀏覽器的cookie 設置:  

 1 import requests
 2 from bs4 import BeautifulSoup
3 session = requests.Session() # 創建一個session對象 4 headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) 5       AppleWebKit 537.36 (KHTML, like Gecko) Chrome", 6       "Accept":"text/html,application/xhtml+xml,application/xml; 7       q=0.9,image/webp,*/*;q=0.8"}
8 url = "https://www.whatismybrowser.com/developers/what-http-headers-is-my-browser-sending" #這個網站可以把請求頭顯示在頁面上方便我們驗證 10 req = session.get(url, headers=headers) #發起get請求 11 bsObj = BeautifulSoup(req.text) 12 print(bsObj.find("table",{"class":"table-striped"}).get_text)

輸出結果中的請求頭應該和程序中設置的headers 是一樣的。這樣就完成了模擬用戶訪問的第一步模擬請求頭。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM