1. 程式人生 > >python爬蟲 urllib庫基本使用

python爬蟲 urllib庫基本使用

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庫基本使用