我只想弄清楚如何保持与网站的连接打开。在我获得URL之后,我尝试使用while循环,但我可以看到它已经不再连接到网站了。如何导航到URL,并在运行循环时保持该URL打开整个时间?我只是希望它永远循环,也许从网站打印一些数据。这是我试过的代码,感谢您的帮助!
import requests
import time
url = 'https://www.google.com'
s = requests.session()
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}
r = s.get(url, headers=headers)
while True:
print str(r)
time.sleep(10)
答案 0 :(得分:2)
你问题的目的是什么?你打算通过打开一个连接来实现什么目标?
我怀疑你可以永远保持开放,但你所做的事情在某种程度上应该有效。
使用import requests
import time
url = 'https://www.google.com'
s = requests.session()
while True:
r = s.get(url)
print(r.text)
time.sleep(10)
会话应确保正确设置HTTP keepalive选项,并且远程服务器应在为每个HTTP请求提供服务后保持TCP连接处于打开状态。如果您停止发送请求,则服务器最终将超时连接并关闭它。
重要的是,您必须继续提出请求,例如:
void Main()
{
// we defin the IComparer class to define Sort Order
var sortOrder = new SortOrder("dfbcae");
var testOrder = "abcdeeabc".ToCharArray();
// sort the array using Array.Sort
Array.Sort(testOrder, sortOrder);
Console.WriteLine(testOrder.ToString());
}
public class SortOrder : IComparer
{
string sortOrder;
public SortOrder(string sortOrder)
{
this.sortOrder = sortOrder;
}
public int Compare(object obj1, object obj2)
{
var obj1Index = sortOrder.IndexOf((char)obj1);
var obj2Index = sortOrder.IndexOf((char)obj2);
if(obj1Index == -1 || obj2Index == -1)
{
throw new Exception("character not found");
}
if(obj1Index > obj2Index)
{
return 1;
}
else if (obj1Index == obj2Index)
{
return 0;
}
else
{
return -1;
}
}
}
此代码应保持连接打开,并允许通过同一TCP连接发送多个请求。
答案 1 :(得分:0)
因此,一般情况下,当您发送HTTP请求时会发生什么,您创建了一个连接到服务器的套接字,并且您发送了一个请求并且全部是这样的(好吧,实际上没有但你明白了):)。 然后服务器将回复你的状态代码(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes),所以也许你想监视一个服务器,看看它是否开启,持续多长时间等等。然后你可以这样做:
true
非常简单,您只需每2秒发送一次请求。然后检查状态代码是否正确。我希望这会有所帮助。