2

我有一个 python 脚本,它接受几个 url 的输入。我的脚本循环遍历这些 url 并从每个页面打印出 htmltext。网站会将其视为 3 个单独的 GET 请求,因此对站点有 3 个“点击”,还是会看到套接字连接并将其视为对页面的 1 个“点击”?

我认为这是通过检查调试的第一个选项,如果是这样,是否可以从同一站点上的多个 URL 获取数据,但该站点仅将其视为站点的 1 个“命中”?我可以利用保持活动功能在 urllib3 中实现这一点吗?

我的脚本如下:

for u in url:
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    req = urllib2.Request(u)
    req.add_header('User-Agent','Mozilla/5.0')
    print urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1)).open(req)
    resp = opener.open(req)
    htmltext = resp.read()
4

1 回答 1

2

网站会将其视为 3 个单独的 GET 请求,因此对站点有 3 个“点击”,还是会看到套接字连接并将其视为对页面的 1 个“点击”?

是的,即使您重用套接字连接,它仍然是 3 个不同的请求(通过一个套接字)。无论您使用了多少连接,服务器的访问日志都会显示 3 个请求。

重用连接的好处是创建一个新的 TCP 套接字并与服务器协商握手是一个相对昂贵的过程。有时,这比检索 HTTP 响应正文本身要花费更多时间。通过重用连接,您可以在第一个请求之后跳过该部分。

于 2015-04-22T23:57:30.877 回答