我需要使用python请求库对URL执行GET请求,并仅获取最后100行

我需要使用python请求库对URL执行GET请求,并仅获取最后100行,python,python-2.7,get,python-requests,Python,Python 2.7,Get,Python Requests,总结: 目前,我正在一个{.log}URL上做一个GET请求,这个URL大约有7000多行。 我需要获取响应,验证响应中的特定消息,如果它不存在,我需要在同一URL上再次执行GET请求。 GET上的这个迭代非常耗时,大部分时间都会导致陷入停滞状态 期望: 我需要一种方法,在这种方法中,我执行GET请求操作,只获取最后100行作为响应,而不是每次获取所有7000多行 URL=“” 代码 def get_log(self): info(“发送get请求以检索叉角羚日志”) resp=requests

总结: 目前,我正在一个{.log}URL上做一个GET请求,这个URL大约有7000多行。 我需要获取响应,验证响应中的特定消息,如果它不存在,我需要在同一URL上再次执行GET请求。 GET上的这个迭代非常耗时,大部分时间都会导致陷入停滞状态

期望: 我需要一种方法,在这种方法中,我执行GET请求操作,只获取最后100行作为响应,而不是每次获取所有7000多行

URL=“”

代码

def get_log(self):
info(“发送get请求以检索叉角羚日志”)
resp=requests.request(“GET”http://ssdg.log")
logging.info(“打印回调url响应”)
#logging.info(resp)
#logging.info(响应文本)
返回相应文本

您不能只下载HTTP请求的最后100行。但是,您可以使用

data = resp.text.split('\n')
last_lines = '\n'.join(data[-100:])
return last_lines

因此,如果您的服务器接受范围请求,那么您可以使用这样的代码来获取最后4096个字节

import requests
from io import BytesIO

url = 'https://file-examples.com/wp-content/uploads/2017/10/file_example_JPG_100kB.jpg'

resp = requests.request("HEAD", url)
unit = resp.headers['Accept-Ranges']
print(resp.headers['Content-Length'])
print(unit)
headers = {'Range': f'{unit}=-4096'}
print(headers)
resp = requests.request("GET", url, headers=headers)
b = BytesIO()

for chunk in resp.iter_content(chunk_size=128):
    b.write(chunk)

print(b.tell())

b.seek(0)
data = b.read()

print(f"len(data): {len(data)}")

您可能无法指定“获取最后100行”,但如果服务器发出
Accept Ranges
response头,您可以使用Range头。例如,
范围:字节=500-999
。您可以发出HEAD请求,从内容长度响应Header获取总大小。您可以使用,例如,
Range:bytes=-500
获取文件的最后500个字节,这样您就不需要事先知道文件的长度/大小。