簡體   English   中英

如何從 Python 中的 URL 連續提取數據?

[英]How to continuously pull data from a URL in Python?

我有一個鏈接,例如www.someurl.com/api/getdata?password=... ,當我在網絡瀏覽器中打開它時,它會發送一個不斷更新的文本文檔。 我想在 Python 中建立一個相同的連接,並將這些數據在收到時實時轉儲到一個文件中。 我嘗試使用requests.Session() ,但由於數據流永遠不會結束(並且丟棄它會丟失數據),因此獲取請求也永遠不會結束。

import requests

s = requests.Session()
x = s.get("www.someurl.com/api/getdata?password=...") #never terminates

這樣做的正確方法是什么?

我在這里找到了我正在尋找的答案: Python Requests Stream Data from API

全面實施:

import requests

url = "www.someurl.com/api/getdata?password=..."
s = requests.Session()
with open('file.txt','a') as fp:
    with s.get(url,stream=True) as resp:
        for line in resp.iter_lines(chunk_size=1):
            fp.write(str(line))

請注意, chunk_size=1是數據立即響應新的完整消息所必需的,而不是在遍歷所有行之前等待內部緩沖區填滿。 我相信chunk_size=None是為了做到這一點,但它對我不起作用。

您可以繼續向 url 發出 get 請求

import requests
import time

url = "www.someurl.com/api/getdata?password=..."

sess = requests.session()
while True:
    req = sess.get(url)
    time.sleep(10)

這將在 1 秒后終止請求,

import multiprocessing
import time
import requests

data = None

def get_from_url(x):
    s = requests.Session() 
    data = s.get("www.someurl.com/api/getdata?password=...")    

if __name__ == '__main__':
    while True: 
        p = multiprocessing.Process(target=get_from_url, name="get_from_url", args=(1,))
        p.start()

        # Wait 1 second for get request
        time.sleep(1)

        p.terminate()

        p.join()
        
        # do something with the data 
        print(data) # or smth else

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM