1. 程式人生 > 其它 >第一章 爬蟲入門

第一章 爬蟲入門

第一章 爬蟲入門

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的內容