根據上一節的內容的銜接
一:urllib.request的使用
headers的一些屬性
User-Agent : 有些服務器或 Proxy 會通過該值來判斷是否是瀏覽器發出的請求
Content-Type : 在使用 REST 接口時,服務器會檢查該值,用來確定 HTTP Body 中的內容該怎樣解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 調用時使用
application/json : 在 JSON RPC 調用時使用
application/x-www-form-urlencoded : 瀏覽器提交 Web 表單時使用
在使用服務器提供的 RESTful 或 SOAP 服務時, Content-Type 設置錯誤會導致服務器拒絕服務
根據上面的情況,我們可以知道,user-Agent是身份,有些服務器會根據身份來是否得到響應,所以則需要設置User-Agent u
對於獲得header,可以使用fiddler來獲取
如圖所示:
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data =urllib.parse.urlencode(values)
request =urllib.request
.Request(url, data, headers)
response = urllib.request.urlopen(request)
page = response.read()
二:requests的高級使用
設置header是一樣的作用
例子:
headers={'user-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
html=requests.get('http://oa.gzcc.cn/index.php?m=content&c=index&a=show&catid=42&id=967',headers=headers)
效果十一樣的
因為selenium是本來就是使用服務器,所以這個不需要設置