jupyter的基本快捷鍵
- a b 創建cell(a是在選擇的cell上方創建cell,b是在下方)
- x dd 刪除cell
- TAB 單詞補全
- shift+tab 查看幫助信息
- y m 模式切換
爬蟲的概念
- 通過編寫代碼來模擬瀏覽器操作,去互聯網上爬取/獲取數據的過程
爬蟲的分類
- 通用爬蟲 爬取一整張頁面的數據
- 聚焦爬蟲 想要獲取局部數據,必須要建立在通用爬蟲的基礎上(數據解析)
- 增量式爬蟲 實時監測網站上數據更新的情況,只爬取已經更新的數據
反爬機制
- 網站的公司或者個人制定了一系列的規則或策略阻止爬蟲程序爬取數據
反反爬策略
- 通過改進爬蟲程序來破解一些反爬機制,從而達到獲取帶有反爬機制網站的數據
robots協議
- 文本協議, 防君子不防小人
請求頭
- User-Agent 請求載體的身份標識(華峰的身份證)
- Connection: close
響應頭
# 響應數據類型
- Content-Type: text/json
fidder抓包工具
HTTP協議(https和加密方式)
- 協議的概念: 客戶端與服務端進行交互的一種方式
- 加密方式:
- 對稱密鑰加密
- 非對稱密鑰加密
- 證書密鑰加密
requests模塊
- 安裝:
- pip3 install requests
- 概念:
- 模擬瀏覽器向網站服務器發送請求
- 作用:
- 爬取數據
- requests模塊的使用:
- get
- post
- 反爬機制:
- UA檢測
- 反反爬策略:
- UA偽裝
爬取數據的流程:
- 1.指定URL url = "https://www.baidu.com"
- 2.發送請求 response = requests.get(url=url)
- 3.獲取響應數據 page_text = response.text
- 4.持久化存儲 with open('./file.html', 'w', encoding ='utf-8') as f:
f.write(page_text)
第一個爬蟲案例:
# 需求:爬取搜狗指定詞條搜索后的頁面數據(通過UA偽裝對代碼改進) import requests url = "https://www.sogou.com/web?query=學位" #獲取url headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } #UA偽裝 response = requests.get(url=url,headers=headers) #發送請求 response.encoding="utf-8" #獲取的數據提供編碼方式 page_text = response.text # 獲取數據 with open('./sougou.html', 'w', encoding='utf-8')as f : #長久保存 f.write(page_text)
對上一個案例進行改進:
查詢的keyword允許自定義輸入
import requests word = input("請輸入需要查詢的關鍵字: ") sougou_url = "https://www.sogou.com/web" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } params = { "query":word } response = requests.get(url=sougou_url,headers=headers,params=params) response.encoding='utf-8' page_text = response.text with open('./daxiong.html','w',encoding='utf-8')as f: f.write(page_text)
浙公網安備 33010602011771號