2016-10-25 127 views
0

我使用以下代碼來檢索網頁。Python - 如何使用請求等待服務器響應

import requests 
payload = {'name': temp} #I extract temp from another page. 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0','Accept': 'text/html, */*; q=0.01','Accept-Language': 'en-US,en;q=0.5', 'X-Requested-With': 'XMLHttpRequest' } 
full_url = url.rstrip() + '/test/log?' 
r = requests.get(full_url, params=payload, headers=headers, stream=True)      
for line in r.iter_lines(): 
    if line: 
    print line 

但是由於某些原因,http響應缺少標籤內的文本。
我發現,如果我發送請求Burp,攔截它並等待3秒前轉發它,然後我得到完整的HTML頁面包含標籤內的文本.... 我仍然找不到原因。想法?

+4

'requests.get'是同步的,它自己等待響應。什麼是打嗝? – Barmar

+0

Burp是代理軟件 – acemutha

+0

您是第一次發送一個應該更新服務器上數據的請求,然後發送第二個請求以獲取結果?也許第一個請求尚未完成。 – Barmar

回答

0

從請求文檔:

默認情況下,當你犯了一個請求,響應的主體是 立即下載。您可以覆蓋此行爲,並推遲 下載響應身體,直到你的流參數訪問Response.content 屬性:

Body Content Workflow

換句話說嘗試在requests.get()

去除stream=True

當您訪問r.content時,您將獲得所有內容,其中r是res ponse。

+2

響應主體是否包含標籤的內容會如何改變? – Barmar

+0

你能改說嗎?不知道我明白你的意思 – acemutha

+0

@abc。我試過了,沒有運氣 – acemutha

相關問題