python3重定向
❶ python requests庫如何處理302重定向
你的意思是希望requests報告302?
r = requests.get(url, allow_redirects=False)
r.status_code
r.headers['Location']
❷ python post 請求重定向怎麼辦
重定向與請求歷史
默認情況下,除了 HEAD, Requests會自動處理所有重定向。
可以使用響應對象的 history 方法來追蹤重定向。
Response.history 是一個:class:Response <requests.Response> 對象的列表,為了完成請求而創建了這些對象。
這個對象列表按照從最老到最近的請求進行排序。
例如,Github將所有的HTTP請求重定向到HTTPS。:
r = requests.get('')
r.url
r.status_code
r.history
如果你使用的是GET, OPTIONS, POST, PUT, PATCH 或者 DELETE,,那麼你可以通過allow_redirects 參數禁用重定向處理:
r = requests.get('', allow_redirects=False)
r.status_code
r.history
如果你使用的是HEAD,你也可以啟用重定向:
r = requests.head('', allow_redirects=True)
r.url
r.history
❸ python 爬網頁 遇到重定向怎麼處理
1.伺服器端重定向,在伺服器端完成,一般來說爬蟲可以自適應,是不需要特別處理的,如響應代碼301(永久重定向)、302(暫時重定向)等。具體來說,可以通過requests請求得到的response對象中的url、status_code兩個屬性來判斷。當status_code為301、302或其他代表重定向的代碼時,表示原請求被重定向;當response對象的url屬性與發送請求時的鏈接不一致時,也說明了原請求被重定向且已經自動處理。
2.meta refresh,即網頁中的<meta>標簽聲明了網頁重定向的鏈接,這種重定向由瀏覽器完成,需要編寫代碼進行處理。例如,某一重定向如下面的html代碼第三行中的注釋所示,瀏覽器能夠自動跳轉,但爬蟲只能得到跳轉前的頁面,不能自動跳轉。
<html>
<head>
<metahttp-equiv="refresh"content="0.1;url=http://www..com/"><!--本網頁會在0.1秒內refresh為url所指的網頁-->
</head>
</html>
解決辦法是通過得到跳轉前的頁面源碼,從中提取出重定向url信息(上述代碼第三行中的url屬性值)。一個具體的操作:①使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取出content的值 ②使用正則表達式提取出重定向的url值。
3.js重定向,通過javaScript代碼形式進行重定向。如下面javascript代碼
<scriptlanguage=javascript>window.location.href='http://www..com'</script>
對於這種方式的跳轉,由於可以實現該功能的JavaScript語句有多種形式,不能再使用正則表達式提取url,只能考慮載入JavaScript代碼來進行解決。
❹ 關於python的輸出重定向
importsys
f=open('a.txt','w')
print>>sys.stdout,'hello,world'
hello,world
print>>f,'hello,world'
f.close()
輸出到屏幕的內容重定向到文件,供參考。
defprint(stream):
"""print(value,...,sep='',end='\n',file=sys.stdout)
Printsthevaluestoastream,ortosys.stdoutbydefault.
Optionalkeywordarguments:
file:afile-likeobject(stream);defaultstothecurrentsys.stdout.
sep:stringinsertedbetweenvalues,defaultaspace.
end:,defaultanewline."""
pass