urllib的實現---請求響應and請求頭處理


在python3中 urllib庫和urilib2庫合並成了urllib庫。。
其中urllib2.urlopen()變成了urllib.request.urlopen()
urllib2.Request()變成了urllib.request.Request()

 1,實現一個完整的請求和響應模型

import urllib
#請求
request = urllib.request.Request('https://www.baidu,com')
#響應
response = urllib.request.urlopen(request)
html = response.read()
print(html)
 

post請求

import urllib
from urllib import parse
from urllib import request


url = 'https://www.xxx.com/login'
postdata = {'username': 'qwe',
            'password': 'qwe123'

}
#info 需要被編碼成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url,data)
response = request.urlopen(req)
html = response.read()

2.請求頭headers處理

將上面的代碼修改,設置一下請求頭中的User-Agent域和Referer域信息

User Agent中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。

HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器基此可以獲得一些信息用於處理。

from urllib import parse
from urllib import request


url = 'https://www.xxx.com/login'
url_agent = 'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
referer = 'http://www.xxxx.com/'
postdata = {'username': 'qwe',
            'password': 'qwe123'

}
header = {'User-Agent': url_agent,'Referer': referer}
#info 需要被編碼成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url,data,header)
response = request.urlopen(req)
html = response.read()

也可以使用add_header來添加修改如下

from urllib import parse
from urllib import request


url = 'https://www.xxx.com/login'
url_agent = 'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
referer = 'http://www.xxxx.com/'
postdata = {'username': 'qwe',
            'password': 'qwe123'

}
#header = {'User-Agent': url_agent,'Referer': referer}
#info 需要被編碼成urllib 能理解的格式
data = parse.urlencode(postdata)
req = request.Request(url)
req.add_header('User-Agent',url_agent)
req.add_header('Referer',referer)
req.data = data
response = request.urlopen(req)
html = response.read()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM