Python 多次点击url
我想在python中多次点击URL。目前,我一直在使用webbrowser.open进行此操作,但速度非常慢,占用大量内存。还有更有效的方法吗?使用吗?作为一个标准的经验法则,总是先查看标准库,那里有很多有用的包Python 多次点击url,python,url,Python,Url,我想在python中多次点击URL。目前,我一直在使用webbrowser.open进行此操作,但速度非常慢,占用大量内存。还有更有效的方法吗?使用吗?作为一个标准的经验法则,总是先查看标准库,那里有很多有用的包 import urllib2 url = "http://www.google.com" n = 8 for i in range(n): urllib.urlopen( url ).read() 如果您最终想要在HTTP请求中使用任何不那么琐碎的东西,您可能希望研究一下 F
import urllib2
url = "http://www.google.com"
n = 8
for i in range(n):
urllib.urlopen( url ).read()
如果您最终想要在HTTP请求中使用任何不那么琐碎的东西,您可能希望研究一下
F.X.的答案几乎肯定是你想要的 但你问的是效率,如果你真的想尽可能地提高效率,你可以做得更好。越早关闭套接字,在计算机和web服务器上浪费的CPU、内存和带宽就越少 此外,如果您并行地发出多个请求,虽然这不会节省机器上的任何资源,但实际上会浪费一些资源或服务器,可能会更快地完成。这就是你想要的吗 当然,这就引出了一个问题:点击URL到底意味着什么。只发送请求并立即关闭是否可以接受?或者你至少需要等待回复电话?就这一点而言,提出HEAD请求而不是GET是否可以接受?你需要真实/有用的标题吗 无论如何,为了做到这一点,你应该降到一个较低的级别。大多数高级库都不提供任何方法,例如,在读取任何内容之前关闭套接字。但编写HTTP请求并不难* 例如:
from contextlib import closing
from socket import create_connection
from concurrent.futures import ThreadPoolExecutor, wait
host, port = 'www.example.com', 80
path = '/path/to/resource.html'
def spam_it():
with closing(create_connection((host, port))) as sock:
sock.sendall('GET {} HTTP/1.0\n\n'.format(path))
with ThreadPoolExecutor(max_workers=16) as executor:
wait(executor.submit(spam_it) for _ in range(10000))
*好的,手工制作HTTP请求实际上是……如果您只需要制作一个静态的、琐碎的请求,请自己动手,但一般来说,您肯定要使用urllib、请求或其他库。您说的是urllib,但链接到urllib2。否则,答案很好。@EnnoShioji:这不是重复的。高效地向同一url发出多个请求是另一个问题。您需要类似于curl的工具,而不仅仅是curl.related:import requests requests.geturl=some_url-在循环+1中运行它。虽然示例代码在Python2或Python3上不起作用,但请使用bytes literal发送数据,并说明futures是Python2上的第三方
from contextlib import closing
from socket import create_connection
from concurrent.futures import ThreadPoolExecutor, wait
host, port = 'www.example.com', 80
path = '/path/to/resource.html'
def spam_it():
with closing(create_connection((host, port))) as sock:
sock.sendall('GET {} HTTP/1.0\n\n'.format(path))
with ThreadPoolExecutor(max_workers=16) as executor:
wait(executor.submit(spam_it) for _ in range(10000))