2016-10-25 92 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

相关问题