第一章 爬蟲入門
阿新 • • 發佈:2022-04-03
第一章 爬蟲入門
1.1 第一個爬蟲程式
基礎程式碼
# 製作者:tlott
from urllib.request import urlopen
url = "http://www.baidu.com"
resp = urlopen(url) # resp是response的意思
with open("mybaidu.html", mode="w", encoding="utf-8") as f: # utf-8可由原始碼中獲取得知
f.write(resp.read().decode("utf-8")) # 讀取網頁的原始碼
print("over!")
1.2 web請求過程剖析
渲染方式:
1)伺服器渲染:
定義:在伺服器端直接將資料和html整合在一起,統一返回給瀏覽器
特點:在頁面原始碼中能看到資料
2)客戶端渲染:
定義:第一次請求只返回html骨架,第二次請求拿到資料,進行資料展示
特點:在頁面原始碼中看不到資料
1.3 HTTP協議
請求: 1)請求行—>請求方式(get/post)請求URL地址 協議 2)請求頭—>放一些伺服器要使用的附加資訊 3)請求體—>一般放一些請求引數 響應: 1)請求行—>協議 狀態碼 2)響應頭—>放一些客戶端要使用的附加資訊 3)響應體—>伺服器返回的真正客戶端要用的內容(HTML,json)等。
在後⾯我們寫爬⾍的時候要格外注意請求頭和響應頭. 這兩個地⽅一般都隱含著⼀些⽐較重要的內容
請求頭中最常⻅的⼀些重要內容(爬⾍需要):
1.User-Agent : 請求載體的身份標識(⽤啥傳送的請求)
2.Referer: 防盜鏈(這次請求是從哪個⻚⾯來的? 反爬會⽤到)
3.cookie: 本地字串資料資訊(⽤戶登入資訊, 反爬的token)
響應頭中⼀些重要的內容:
1.cookie: 本地字串資料資訊(⽤戶登入資訊, 反爬的token)
2.各種神奇的莫名其妙的字串(這個需要經驗了, ⼀般都是token 字樣, 防⽌各種攻擊和反爬)
請求⽅式:
GET: 顯示提交
POST: 隱示提交
1.4 Requests入門
import requests
url = "https://movie.douban.com/j/chart/top_list"
# 如果url值過長,可將?及其之後的內容刪除,並在之後的內容中加入負載引數
param = {
"type": "24",
"interval_id": "100:90",
"action": "",
"start" : 0,
"limit": 20
}
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55"
}
resp = requests.get(url = url, params = param, headers=headers)
print(resp.json())
resp.close() # 關掉resp
⼀些⽹站在進⾏請求的時候會校驗你的客戶端裝置型號,所以要注意headers的內容