python爬蟲 urllib庫基本使用
阿新 • • 發佈:2018-07-17
afa 識別 urllib spa response aid gen odin pos
以下內容均為python3.6.*代碼
學習爬蟲,首先有學會使用urllib庫,這個庫可以方便的使我們解析網頁的內容,本篇講一下它的基本用法
解析網頁
#導入urllib from urllib import request # 明確url base_url = ‘http://www.baidu.com/‘ # 發起一個http請求,返回一個類文件對象 response = request.urlopen(base_url) # 獲取網頁內容 html = response.read().decode(‘utf-8‘) #將網頁寫入文件當中 with open(‘baidu.html‘,‘w‘,encoding=‘utf-8‘) as f: f.write(html)
構造請求
有些網站通過獲取瀏覽器信息判斷是否是機器在操作 因此我們需要構造請求頭
#導入模塊 from urllib import request base_url = ‘http://www.xicidaili.com/‘ # 構造請求頭 headers = { ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘ } # 構造請求對象 req = request.Request(base_url,headers=headers) # 發起請求 response = request.urlopen(req) # 獲取網頁內容 html = response.read().decode() #打印獲取的頁面代碼 print(html)
get請求傳輸數據
提交表單經常用到的就是post發送或者get發送。區別在於後者對於提交的內容會直接顯示到url上。那麽下面讓我們嘗試實現他們
from urllib import request,parse import random #get要帶的值qs = { ‘wd‘ : ‘妹子‘, ‘a‘ : 1 } #將攜帶的值轉換為瀏覽器識別的值 qs = parse.urlencode(qs) #拼接url base_url = ‘http://www.baidu.com/s?‘ + qs #定義一個頭列表用來隨機獲取 ua_list = [ ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘, ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘ ] # 構造請求頭 headers = { # 隨機構造user-agent ‘User-Agent‘: random.choice(ua_list) } # 構造請求對象 req = request.Request(base_url,headers=headers) # 發起請求 response = request.urlopen(req) # 獲取請求內容 html = response.read().decode()html = response.read().decode()
post請求傳輸數據
from urllib import request,parse base_url = ‘http://fanyi.baidu.com/sug‘ # 構造請求表單數據 form = { ‘kw‘ : "一只羊" } #將攜帶的值轉換為瀏覽器識別的值 form = parse.urlencode(form) # 構建post請求 ,如果指定data參數 ,則請求是post請求 req = request.Request(base_url,data=bytes(form,encoding=‘utf-8‘)) # 發起http post請求 response = request.urlopen(req) # 獲取響應內容(json) data= response.read().decode()
這樣就模擬了簡單的登錄,當然,大部分網站是無法這樣輕易的就登錄的,但這段代碼是模擬登錄的核心
python爬蟲 urllib庫基本使用