anaconda下自帶 jupyter notebook ,安裝及環境變量設置參考:
https://blog.csdn.net/Light__1024/article/details/88655333
簡介:
爬蟲,模擬瀏覽器瀏覽網頁,抓取頁面數據(抓取全部數據或指定數據)。
robots.txt協議,口頭協議,約定爬蟲數據的獲取要遵循的協議。
NEW
點擊Folder新建一個文件夾
點擊Python 3 新建一個ipynb爲後綴的文件
點擊Text File 默認生成一個文本文件 可以修改文件名和後綴
快捷鍵的使用
快捷鍵的使用
b向下插入一個cell
a向下插入一個cell
m:將cell的類型切換成markdown類型
y:將cell的類型切換成code類型
shift+enter:執行
shift+tab:查看模塊的幫助文檔
tab:自動補全
urllib
- Python自帶的一個用於爬蟲的庫
- 主要作用:通過代碼模擬瀏覽器發送請求。
- 常被用到的子模塊:urllib.request和urllib.parse
使用流程:
- 指定url
- 基於urllib的request子模塊發起請求
- 獲取響應中的數據值
- 持久化存儲
import urllib.request
# 1.指定url字符串形式
url = 'https://www.sogou.com/'
#2.發起請求:urlopean可以根據指定的url發起請求,且返回一個響應對象
response = urllib.request.urlopen(url = url)
#3.獲取頁面數據:read函數返回的就是響應對象中存儲的頁面數據:(byte)-二進制形式
page_text = response.read()
#4.持久化存儲,'wb'
with open('sougou.html','wb') as f:
f.write(page_text)
反爬機制:
網站檢查請求的UA,如果發現UA是爬蟲程序,則拒絕提供網站數據
- User-Agent(UA):請求載體的身份標識
- 反反爬機制:僞裝爬蟲程序請求的UA–如何通過代碼實現
import urllib.request
url='https://www.baidu.com/'
# 自制定一個請求對象,注意參數格式
headers={
#存儲任意的請求頭信息
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
page = response.read()
with open('baidu2.html','wb') as f:
f.write(page)
小結
簡單的爬蟲反爬蟲只需記住:
post請求
import urllib.request
import urllib.parse
# 1.通過抓包工具抓取post請求的url
post_url='https://fanyi.baidu.com/sug'
# 2.封裝post請求參數
data={
"kw":"西瓜"
}
# 3.使用parse模塊中的urlencode(返回值類型爲str)進行編碼處理
data=urllib.parse.urlencode(data)
#自定義請求頭信息字典
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
# 4.將步驟3中的編碼結果轉換成byte類型
data = data.encode()
#自定義請求對象,然後將封裝好的post請求參數賦值給Requst方法的data參數。
#data參數:用來存儲post請求的參數
request=urllib.request.Request(post_url,data=data,headers=headers)
#自定義的請求對象中的參數(data必須爲bytes類型)
response=urllib.request.urlopen(request)
response.read()