在一个连接中从网站上的多个网址获取HTML数据

时间:2015-04-22 23:14:21

标签: python python-2.7 urllib2 urllib3

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

我认为这是通过检查调试的第一个选项,如果是这样,是否可以从同一站点上的多个URL获取数据,但该站点只能将此视为“点击”到该站点?我可以利用keep-alive功能在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()

1 个答案:

答案 0 :(得分:2)

  

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

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

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